浅谈Code Review

Code Review

一.引言

代码评审是合作开发的环节当中是一个重要的环节,通过代码评审,可以尽早的发现项目中存在的问题,也可以帮助同事之间的沟通与交流。实际上道理大家都懂,只是真正能做到的,大概是一些大规模大一点的公司,对工程能力要求比较严格的追求,由于现在的互联网公司,产品的迭代是非常快的,如果很容易就忽视了代码评审的重要性。我们在日常的开发当中,写代码的时间占据的比例是比较大的,但是整体的产品迭代过程中,开发的时间占据的比例是很小的,往往一分钟写的代码,可能要运行好长时间,所以保证代码的质量花多长时间其实不为过的。

我之前在一个小公司开发,完全没有代码评审,导致测试环境没有测试的问题,线上就会碰雷,那个时候我就感受到代码评审的重要性,但是代码评审也不是随便的检查代码风格,命名方式的一些常规审查。后来我去了百度做研发,才真正感受到代码评审的规范流程。

下面是整体的规范代码评审的流程

如上图,可以看到,当我们开发完成后,通常使用版本管理工具Git或者SVN,现在主流都是使用分布式的Git,提交我们的代码到评审页面,此时会触发系统当中的代码检查的工具,这类工具可以检查到各种语言的代码规范,比如空格,缩进等,等这个通过后,就需要添加两三个评审人给你的代码评审并给出意见,如果打分通过,就可以合入代码库,如果不通过,按照意见修改,并重复操作。

二.代码审查的好处

1.统一标准,项目开始的时候会统一命名,注释,日志,等规范。保证了项目的可扩展性。

2.在项目进行过程中,我们会时不时地向团队增加新的开发人员,代码审查可以极大地降低这些新加入的人员的熟悉时间。特别地,我们可以让新加入的开发人员很有信心地开发新特性,因为我们可以在合并前审查代码并且对于他们所编写的任何代码提供有价值的反馈信息。

3.代码审查会提交组里的讨论氛围,几个人帮你看代码,导致自己写代码的时候也需要认真的思考一下,不然代码被打回很多次,也占用了大家的时间。

4.提高个人能力,互相讨论之间也学到别人的代码风格。

三.CodeReview代码问题

1.代码是否实现了需求定义的功能?

代码评审并不是简单了解一下代码风格,就可以当评审人,应该把需要评审的需求给弄明白才可以有资格给别人进行代码评审,也能有效的了解对方是否满足了需求。

2.设计问题:是否满足SOLID原则、是否有更加优化的实现方式、方法是否满足单一职责原则?

这个是设计问题,要尽可能的优化代码,使得代码是最简洁性的才是比较好的方式。

3.是否有重复代码?代码复用性问题如何?

4.是否死代码?

5.代码可维护性问题:是否有循环依赖问题、代码是否过于复杂?

6.业务逻辑是否有问题?

7.是否有一些不“舒服”的味道:注释、命名、函数等

四.CodeReview中需要注意的点:

1.CodeReview和写代码一样重要!

2.CodeReview前需要先看需求卡片,了解了需求才能更好的做CodeReview,必要时面对面沟通,针对评论必须有记录!

3.问题没有改正前,不能通过!

4.每一行代码都需要Review!

5.每次Review的代码量不能过多,最多300行以内!(新建模块逐步完成、多次提交)

6.CodeReview必须预留足够的时间!


参考:

http://www.infoq.com/cn/news/2013/11/code-review-why-when-how

《百度工程师手册》

http://www.raychase.net/4772


posted @ 2018-11-06 13:36 辰砂tj 阅读(...) 评论(...) 编辑 收藏