我们如何做Code Review

简介: 我们如何做Code Review

提到Code Review(CR),就和单元测试一样,虽然一直在提倡,大家也都知道他的重要性,但是实践起来总是差点意思,有个说法是CR就和鬼一样,一直有他的传说,但一直没有见到过。本文梳理下团队目前在做的CR实践,做点沉淀。

01

目标是什么?


任何活动都有它的目标,CR也不例外,对于CR,团队给出的目标是:为了保证公司整体代码的健康状况随着不断迭代,始终保持一个较高的水平,希望通过规范化代码评审及其过程,可以提高代码质量、减少错误、促进团队合作和知识分享,提高软件开发的效率和质量。

 

从这个目标中,就可以看出CR的种种好处(其实大家都能看得到,只是无法保证落地):

 

  1. 统一代码风格:虽然实现一个需求有各种各样的方式,但统一的代码风格有助于团队间的沟通交流,也有助于快速分析确认问题,所以在CR的过程中,非常重要的一项内容就是统一代码风格,包含命名规范、循环规范、复杂度规范等,需要团队提前声明并达成一致。

  2. 提升能力:“Talk is cheap, show me the code”,不论是参与评审代码的人,还是被评审的人,都会在一次次的CR中提升自己,因为CR的过程就是发现自己不足的过程。

  3. 知识共享:在评审过程中遇到好的实现,就可以快速推广,遇到常见的问题,就可以提前避免,让个人的经验快速变成团队经验。我们的新人加入团队后,有件事就是查看过程的CR记录,了解团队的沉淀。

 

02

有效地保障机制

 

 

如上图所示,为了保证CR的持续落地,形成规范,团队建立了有效的机制来保障这一活动不走样,不流于形式:

 

  1. 代码规范:通过学习《阿里JAVA开发手册》,结合团队自身的特点,重新定义的更有效的代码规范,并导入到 SonarQube中,变成静态扫描规范,融入CI过程中,每次Commit必须通过增量扫描。

  2. 工具使用:除了CI的扫描外,还需要在本地进行一些常规的扫描,快速发现问题并解决问题,如sonarLint插件、P3C插件等,在本地自行检查代码是否合规范


  3. 代码评审:双周举行一次线上/线下代码评审,至少一名技术委员会成员参与,重点关注代码规范、逻辑异常、代码优化、代码缺陷及性能风险等方面的问题,问题统一记录。


  4. 复盘交流:跟踪代码评审是否落地、发现问题是否及时修复。分享评审过程中的典型问题,共同学习和成长。

 

03

评审过程中的策略


在评审过程中,要特别注意不能把代码问题升级成为人的问题,组织者要特别注意引导和及时地提醒,在评审过程中,建议:


  1. 不是每个人的经历都跟你一样: 有些东西对你来说是常识,但有些人可能并不知道,即使他们的能力并不差。你可以说这些东西是常识,但不要显露出嘲笑或高人一等的姿态。

  2. 礼貌用语: 使用礼貌用语(比如“请”)表示对代码提交者的尊重,特别是当你要他们在细节上做出一些调整(比如格式化)时。

  3. 避免夸大: 简单一点,把你的顾虑和问题说出来,这样有助于你获得期望的结果。

 

04

成果展示


CR在团队中的落地已经有一段时间了,这个活动将持续进行下去,目前发现的问题数如下:

 

可以看到,评审过程发现的代码缺陷和性能类其实并不多,更多的是集中在代码规范和代码优化上,这也符合对CR的预期。不能寄希望于CR能发现多少缺陷,因为这本身就是类似于静态代码检查。


代码评审记录表如下图所示:


 

05

CR的积极意义大家都懂,如何落地取决于团队的负责的决心及团队成员对代码的自我要求程度。取决于你做不做。

 

共勉。

相关文章
|
4月前
|
安全 Java 测试技术
code review 正确方式
code review 正确方式
85 1
|
监控 算法 程序员
大厂怎么做Code Review?
发现坏味道的实践,就是Code Review:对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术
315 0
|
开发框架 安全 IDE
|
测试技术 Java 开发工具
|
缓存 人工智能 监控
【如何有效做Code Review】8行代码提出的21个问题
- 很多同学都有这个疑问,如何结构化体系化的做CR?如何综合应用各种手段尽快及早的发现代码问题和缺陷? - 下面围绕这个实例,抛砖引玉,大家可以一起探讨;  - 实例如下 ,短短8行代码,通过CR可以发现多少问题呢?21处;这段代码谁写的不重要,探讨的重点是如何全面发现其中的问题和隐患;  
5913 0
【如何有效做Code Review】8行代码提出的21个问题
|
设计模式 测试技术 程序员
7 个建议让 Code Review 高效又高质
Code Review(CR) 的本质是什么?是为了查错?还是为了 KPI?本文分享阿里资深技术专家的看法:CR 是一种关于社会学的长期行为和组织文化,通过 CR,形成一种良性互动的技术氛围,传播和分享知识,提升代码质量,并给出了 7 个提高 CR 效率和质量的实践建议。
4399 0
7 个建议让 Code Review 高效又高质
聊Code review(下)
上篇描述了什么是code review, 为什么要去做,主要包含哪些内容。本文主要讲如何去做Code review?会带来什么惊喜? 本文的分享者易荣平认为思路比方法重要,Code review 是为了推广代码的最佳实践,而不是挑出代码存在的问题。猿猿们精彩不容错过。
4532 0
8 个 Tips 让你更好的进行 Code Review
Code Review 可以提高代码质量。
1312 0
|
程序员 开发者