1 为什么需要CodeReview
- 保证代码质量
- 通过他人的建议提升技术认知
2 CodeReview的流程
- 制定标准:进行CodeReview前一定要制定好标准。否认提交人和审阅人之间很肯定会引起很多无意义的争执,导致时间耗费增加。
- 学习标准:为了达成共识,需要大家一起学习标准,最终达成共识。
- 评审人前置准备:根据项目情况选择合适的人来评审,同时评审人需要为代码评审做好准备。包括需求学习、方案学习。
- 提交人前置准备:为了提高CodeReview效率,应该对代码提交制定相应标准,这样可以提高效率。
- 代码评审:根据标准原则及工程经验提出意见
- 总结分析迭代标准:根据CodeReview中产生的问题,进一步学习总结,迭代标准,改进下一次Review的效率。
上述是CodeReview的一种流程。这6步骤通常会形成一个闭环,持续迭代。接下来几部分将详细介绍这些过程的各个环节。
3 制定标准
3.1 为什么要制定标准
让团队对问题达成一致,避免无意义的冲突和时间消耗。同时出现问题时有一个可参考的解决标准。
3.2 如何制定标准
- 有意义:制定的标准对于当前现状具有实际意义。能解决当前面临的主要问题。而不是开始就整理一大堆复杂且与主要矛盾无关的标准。
- 充分调研:定标准的意义是让团队对问题能达成共识,因此需要与大家进行充分的讨论。而不是某个人主观臆断而定义。
- 清晰明确:为了让大家达成共识,标准应该是清洗明确无二义性。
- 可执行:标准最终是让团队参照并执行,因此大而虚最终无法执行的标准是不可行的。
3.3 制定哪些内容
3.3.1 标准内容制定
- 冲突解决方案:如果review过程中出现冲突如何解决
- 权利与责任:出现问题提交人与审核的应承担的责任
- 特殊情况解决方案:出现紧急故障时review的过程。例如跳过review或仅又review核心部分代码。或针对其它特殊情况进行特殊制定。
- review检查点:一次review应该关注哪些内容
3.3.2 提交人提交标准制定
进行一次CodeReview并不是随意就能发起。这样进行CodeReview的效率会很低。因此也需要满足一定条件。
- 自测:一定要先行自测完毕
- 选择评审人:有限选择熟悉相关业务的同伴作为评审人
- 提交描述:对自己提交的内容要有准确简介的描述。
- 评审代码量:一次评审代码量尽量做好控制。利用分治的原则,避免一次提交过多代码。这样拆解提高评审效率。例如一次提交的代码量控制在500行内。
- 评审流程说明:要告知评审人提交的代码阅读流程是什么。
- 评审人评论跟进:对于评审人的代码评论要给出说明或进行相应的改进,并重新提交审阅。
3.3.2 评审人标准制定
- 通过标准:根据业务特点制定code review的检查项。
- 反馈:应尽快给与提交人反馈,避免时间过长造成遗忘。
- 评论:code review也涉及到人与人间的交流,因此要使用合适的方式对提交人代码进行评论及交流。给出必须修改、可忽略、建议修改等评注。
4 团队学习
有了标准后需要让大家达成一致,如果有不一样的意见也可得到及时反馈。可以借助内容分享让大家进行。
5 业务梳理
评审的前提是双方对业务都有一定认识,因此需要同步需求概况。
同时对开发者的设计过程要有一定了解。有了这些背景就能更好的进行评审。
6 代码评审
根据检查项和业务状态对代码进行评审,并给出建议。通常需要关注下列信息。
- 完整度:看一次提交是否完整的实现了本次的业务需求。
- 单元测试:检查核心功能是否有单元测试且对于边界条件能够通过测试。
- 注释:对于复杂的业务逻辑,如果不能通过代码本身的命名来表现含义。需要检查是否有有效注释进行说明。
- 技术问题:例如是否存在并发问题、缓存同步问题等、是否能应对异常情况,鲁棒性是否满足、是否易于理解。技术问题就要结合业务梳理阶段与技术方案来一起进行评审。
7 总结分析迭代标准
在评审结束后,可能制定的标准不能满足所有条件。因此需要进行沟通迭代进行标准升级。
参考资料
[1]google的code review机制,https://juejin.cn/post/6844903944175484936