dsdshcym / dsdshcym.github.io

https://yiming.dev/
1 stars 1 forks source link

How to do Code Review correctly - Yiming Chen #9

Open utterances-bot opened 5 years ago

utterances-bot commented 5 years ago

How to do Code Review correctly - Yiming Chen

My current take on How to do code review correctly

https://yiming.dev/blog/2017/10/30/how-to-do-code-review-correctly/

forrestchang commented 5 years ago

业务代码做 Code Review 太困难了:

  1. 你不熟悉别人的需求,所以 Code Review 仅仅停留在表层;
  2. 一个业务需求可能涉及到几百上千行的改动,Reviewer 一一 review 的成本很大;
  3. 很多业务代码用完就仍,基本不会写测试(会有专门的 QA 做集成测试),review 的效果不大。

非业务的代码还是值得做 Code Review 的。

dsdshcym commented 5 years ago

@forrestchang

我完全认同你说的 review 业务代码的三个难点。但也有不同的看法:

  1. 不熟悉别人的需求,所以 Code Review 仅仅停留在表层
  1. 一个业务需求可能涉及到几百上千行的改动,Reviewer 一一 review 的成本很大;

但我觉得这是 author 的问题。reviewer 应该帮助 author 去做 commit 拆分,在下一次做类似改动的时候能让 commit/PR 变小。

甚至这可能是项目管理的问题。一个涉及到上千行改动的大功能,如果能事先拆分成几个只涉及到百行左右的小功能,分阶段开发、部署,尽快有可交付的成果,对整个项目开发也是有益的。

  1. 很多业务代码用完就仍,基本不会写测试(会有专门的 QA 做集成测试),review 的效果不大。

如果确定是用完就扔,那只要能满足需求,代码写得再烂都行。但现实是,一开始觉得用完就扔的代码往往会被复用很多次,甚至一直使用。我们很难去界定什么样的业务代码是用完就扔的。

至于 review 的效果,我觉得只要 author 和 reviewer 能从中学到一些东西,下次能把「用完就扔」的代码写得更好,完成得更快,这次 review 就很值了。

另外,我觉得「集成测试」也应该由对应功能的开发者来负责。不过这个话题就扯远了,也跟公司、团队结构有关。