Code Review

认识 Code Review

概念

Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制对代码、测试过程和注释进行检查,确保整体代码运行状况随着时间的推移而得到改善。

目的和意义

  • 目的:代码质量、知识共享、团队规范
  • 意义:
    • 查找系统和代码的缺陷,把控风险
    • 保证代码整体健康度不会随时间的推移而降低
    • 提高开发者自身水平

方式

常见的 Code Review 有下面几种方式

结对编程(瞬时评审)

  • 一对一的共同编程
  • 场景:复杂的业务问题、或紧急问题的修复

即时代码评审(同步评审)

  • 提交人给审核人讲解任务详情、改动等
  • 场景:不清楚任务目标、或高级指导低级

工具支持的代码评审(异步评审)

  • 和开发流集成,只有 Review 通过才能合并
  • 默认的方式,也是最常用的

基于会议的代码评审(偶尔评审)

  • 组织会议,团队多人共同评审
  • 场景:大型、比较复杂的项目;有一定风险的项目;为了提高整体水平

不做 Code Review 的典型场景

  • 不认同,团队整体意识不到位
  • 需求多,时间紧,疲于应付需求
  • 技术水平不足,无法给出有效意见

Code Review 常见问题

提交人

  • 提交大量代码评审
  • 发起评审前没有进行自测
  • 不进行评审,直接上线
  • 没有给评审人留够充裕的时间

评审人

  • Review 不仔细,产生低级的问题
  • 对业务不熟悉,无法判断影响面
  • 反馈时机长,不及时处理提交人提交的 Code Review

全体

  • 没有规范的 Code Review 机制和自测机制

如何做好 Code Review

前提

要避免 Code Review 流于形式,而避免流于形式的关键点则是 大家都有主观意愿,并且客观条件允许

要有代码规范、Check list、总结优化、激励机制

流程

1
2
3
+-------+      +---------+      +---------+      +---------+      +-----+      +------------+
| 定标准 | +--> | 全员学习 | +--> | 需求梳理 | +--> | 代码评审 | +--> | 讨论 | +--> | 评审结果落地 |
+-------+ +---------+ +---------+ +---------+ +-----+ +------------+
  1. 定标准
    • 目的:有法可依、团队一致
    • 内容:
      • 共识标准:权利责任标准、冲突处理标准、特例紧急case处理标准、检查单标准
      • 提交人标准:发起时机标准、选择评审人标准、Commit 标准、代码标准、合并分支标准、处理评论标准
      • 评审人标准:检查内容标准、可通过标准、评论标准、反馈周期标准
  2. 全员学习
    • 目的:统一思想、确认标准可落地
  3. 需求梳理
    • 统一对需求理解,设计评审有理可依
    • 内容:
      • 提交人要有基于需求的代码改动设计方案
      • 评审人要有基于需求理解之下的代码改造意见
  4. 代码评审
    • 目的:实现正确的业务需求,代码长期的可维护性
    • 内容:参照检查单(功能拆解;架构设计;代码逻辑;库表设计;编码风格;性能;等等)
    • 工具:SonarGerrit 等工具
  5. 讨论
    • 目的:达成共识,求同存异
  6. 评审结果落地
    • 总结归纳,持续优化标准

总结

Code Review 是提高代码质量、把控项目风险的一剂良药,同时也是提高个人水平的一个重要渠道。而长期维持良好的 Code Review 并不容易,但是良好的 Code Review 是个人和团队成功不可或缺的一环。

资料

GoogleCR机制(原文):https://google.github.io/eng-practices/review/reviewer/

GoogleCR机制(翻译版):https://cloud.tencent.com/developer/article/1514271

分享到: