代码Review的那些事儿

2021/03/04

坚持执行代码 Review 对团队,对公司是很有好处的,特别是对写代码的同事!每个一起阅读代码的同事都会提出一些自己的建议 ,这些建议都是很宝贵的资源,往往都会有很大的收获。

1、角色

  1. 代码的作者 Author;
  2. 阅读代码的同事 Reviewer;
  3. 主持人 Host;
  4. 记录员 Recorder。

2、流程

  1. 提前一天发送 Review 代码邮件给相关人员,确定 Host 和 Recorder;
  2. 由 Host 主持 Review 会议;
  3. 由 Reviewer 和 Author 进行代码走读;
  4. 由 Recorder 进行改进记录。

在做代码 Review 之前 Author 需要提前一天需要发正式邮件给相关人员,并且将需要被 Review 的代码通过邮件附件的方式,发送给相关的 Reviewer 让他们提前阅读,这样有助于 Review 的时候可以更高效的进行。并且提前沟通好代码 Review 的会议 Host 和 Recorder。Host 在会议过程中负责组织大家发言和维护秩序,让代码 Review 更高效;Recorder 则负责将整个 Review 过程中提到的需要优化和改进的点进行文档形式的记录,记录的信息需要言简意赅,将哪个文件哪一行代码,问题是什么,建议怎么优化都需要记下来,并且在会议结束过后以邮件的形式发送给 Author 和抄送大家。

3、Review

在进行代码 Review 的时候 Author 需要从文件的第一行开始进行一行行的代码走读,对每一行的代码进行描述,这里需要注意的是不要认为某个功能很简单,就可以一句带过,往往很多线上 Bug 都是因为这种忽略导致的。走读代码的时候 Author 需要解释清楚每一行代码的含义,说明这行代码是干嘛的,为什么要这样写。Reviewer 则需要根据 Author 的描述再结合自己之前阅读代码的理解进行提问或者改进方案。

代码走读的过程持续进行的同时 Recorder 需要及时记录需要改进的内容,并把提出的优化方案记录下来。代码走读的过程是整个 Review 的核心,在这个环节中我们需要注意很多东西。知乎上面有个提问大家的公司的 Code Review 都是怎么做的?遇到过哪些问题?,上面有个回答提出的几个点很不错,我觉得有必要分享给大家,对我们的整个 Review 会很有帮助,特别是当自己是 Reviewer 的时候,需要格外注意。

  1. 对事不对人。要记住大家都是同事,今天自己是 Reviewer 来对别人的代码进行 Review,哪天别人就会对自己的代码进行 Review,所以在整个代码 Review 的环节中,我们可以提出自己的建议,但是需要注意自己的用词和语气,虽然程序员有鄙视链,并且都认为别人的代码垃圾,但是这种时候不能瞎说,容易打架的,还是要谦虚点。
  2. 用正面的词汇进行评价。跟上面说的一样,我们需要用正面的词汇进行评价代码,考虑 Author 的情绪,即使代码写的不好。这个很好理解,毕竟代码 Review 是在很多人面前的,对 Author 来说,让别人看自己写的代码就像在别人面前裸奔一样,所以我们不仅要提出意见在好的地方我们也要进行正向的表扬。
  3. 如果有更好的方案一定要提出来。代码 Review 的目的就是优化代码,找出代码中的隐藏 BUG 以及逻辑问题。所以如果发现了代码有任何不优雅的地方或者会出现问题的地方一定要及时的提出来,不要担心自己说的不对,或者考虑 Author 的面子问题,不指出来,提供更好的解决方案,让大家一起进步。
  4. Review 会议是 Review 代码,而不是讨论需求。这一点也是很容易被带偏的一个点,经常我们会发现在 Review 的过程中,慢慢的就变成了讨论需求了,这种情况一定要避免发生,不然整个代码 Review 环节就是失败的,无法进行下去了。所以 Author 在发起代码 Review 邀请时一定要确保自己理解的需求是正确的,避免浪费大家的时间
  5. 高效的进行。进行代码 Review 的时候我们需要注意一定要高效,如何做到高效就需要每个人都做好相应的准备,Author 需要对自己的代码进行熟练的讲解,Reviewer 需要在参加会议之前将需要 Review 的代码看一下,提前找到可能隐藏的 Bug,对于不懂地方需要做好记录,方便开会的时候及时指出。
  6. 避免形式主义。这一点也是被很多小伙伴忽略的一点,随着代码 Review 的次数越来越多,很多小伙伴可能就把这个当成一个任务,慢慢的就变成了形式主义,而不是注重实际,每次代码 Review 的时候就很随意,长期这样下去对公司,团队以及自己都不好,而且还浪费时间。

Post Directory