CodeReview规范

CodeReview是一个公司技术氛围的标志,也是一个团队氛围的标志。优秀的团队,要经常的进行CR,来保障团队的讨论问题、解决问题的氛围。

CodeReview的目标

  1. 提高代码质量

    当阅读别人的代码,和自己的代码被别人看的时候,才是自己代码质量提高的最好的方式。

  2. 促进团队学习共享

    每个人都有自己思想和习惯,理解他人的思想和习惯才能拓宽自己眼界和认知。

  3. 业务理解与交流

    通过别人的代码,了解别人做的相关业务,可以有效避免闭门造车。

CodeReview的原则

  1. 人人参与

    不同的人参与,有不同的想法,也会有不同的发现。更是在这个过程中形成规范,让大家达成一致。

  2. 经常参与

    随时进行Review,避免Review的代码量太大,或是不及时导致修复的周期增长。

  3. 积累沉淀规范

    每次review后都有所沉淀,形成代码规范,避免以后重新犯同样的问题。

  4. 无需太正式

    主要是一个学习交流的过程,不要有太大压力。

  5. 尽量不要太久

    太久人的精力容易发散,效果会越来越差。

CodeReview的方法

  1. 完整性检查

    代码功能与产品设计是否完整,有没有缺失?提交的代码是否完整?

  2. 一致性检查

    代码逻辑与设计文档的方案是否一致?CommitLog与提交代码是否一致?代码风格是否一致?有没有格式化?

  3. 正确性检查

    代码逻辑是否正确?中间是不是有bug?

  4. 可理解性检查

    代码是否易于理解?是否有注释?是否抽离了方法?调用链路是否清晰?代码逻辑是否清晰?变量名、方法名是否可以理解?

  5. 健壮性检查

    是否会有空指针?是否会有边界问题?是否会有异常?是否会有越界?是否会有并发?是否会有性能问题?

    是否易于维护和拓展?

  6. 安全问题

    是否有安全漏洞?是否有SQL注入?是否有参数校验?是否有限流熔断?是否有降级策略?

CodeReview的步骤

每个公司的CodeReview的流程都不太相同,因为开发模式不太相同。有的是分支开发,有的是主干开发。 有的是每次commit的时候都Review,有的是提测的时候整体Review。有的是随时Review,有的是定时Review。

  1. 编写者整体介绍业务背景以及代码结构

  2. 审核者提出疑问

  3. 编写者展示自己的代码

  4. 审核者根据规范和思考,发现隐藏的问题

  5. 准确记录需要确认和改进的问题

  6. 事后安排确认与修复

注意:一定要注意氛围,不能把审查会搞成批判会,这样会影响相关人员的积极性。最后一定要给予编写者正面的评价。

CodeReview常见的问题

  1. 业务跑得这么快,没时间 Code Review

这是一个很大的谎言,不要为自己的丑代码找华丽的借口,没有时间好好CR,总有时间焦头烂额地处理故障和投诉。

  1. 态度出现问题,搞成批斗会

    编写者虚心接受,评审者避免个人主义。最后有个主持人把控整个氛围和节奏,避免团队内言语冲突。

CodeReview的工具

阿里p3c

代码规范检查插件p3c,是根据《阿里巴巴Java开发手册》转化而成的自动化插件。

Sonar

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。