前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

一、为什么要 CodeReview

CodeReview 是开发过程不可或缺的重要一环,如果将代码发布比作一个工厂的流水线,那么 CodeReview 就是流水线接近于重点的质检员,他要担负着对产品质量的保障工作,将“缺陷”从众多的“产品”中挑出,反向推动“生产方”改进生产质量

1、改善代码质量:

通过 CodeReview 机制,可以让团队其他同学帮忙协助把关代码质量,发现代码中潜在的质量问题,并给出改进建议,从而推动团队整体代码代码质量的提升。

2、知识共享,统一认知

CodeReview 过程是知识碰撞的过程,是学习别人的知识体系促进自我成长的过程,通过 CR 这样的过程能够将不同成长阶段的成员之间知识水位尽量拉齐,能够有效的提升团队编程的整体水平。

3、识别潜在安全:

通过 CodeReview 能够及时发现代码中潜在的安全问题和性能问题

例如:SQL注入问题、方案安全漏洞问题、部分业务场景查询实现性能较差等问题。

二、代码审查中需要检查的内容

1、设计

比如:这个更改是否遵循我们期望的架构,或者它是否与系统的其他部分集成良好?它的组件之间是否具有高内聚性和低耦合性?

2、实现

我们检查解决方案是否在逻辑上正确,如果代码比应有的复杂,等等。这段代码是否必要?我们还要检查是否使用了良好的设计模式。以及关键的内容

3、测试

我们检查是否所有测试都通过了,我们是否对所有代码路径和行为使用单元测试,并对外部系统(数据库、文件系统等)使用集成测试。我们是否检查了所有边界条件和代码覆盖率在 60 - 80% 之间?

4、文档

我们的 PR 描述添加了吗?我们的解决方案在存储库的 README.md 或其他地方是否有文档更新?

5、代码风格

我们是否遵循了项目的代码风格?您是否知道命名是否良好?开发人员是否为类、方法等选择了确切的名称?代码是否易读?

三、良好实践

关注点分类 关注点细分 核心关注点 常见问题
代码规范与质量 命名 变量命名、方法命名、类命名、包命名 命名拼写错误、命名与实际含义不符(超出或小于)、用词不准
注释 是否有注释、注释是否合理 通篇无注释、注释不准确  
日志打印 日志打印级别、日志打印参数、日志格式、异常打印、是否应该打印日志 日志打印级别误用、日志参数未打印、日志格式不规范、异常信息未打印、打印日志过多  
异常处理 异常是否抛出、是否规范的异常编码等 异常该抛出未抛、肆意的使用RuntimeException  
逻辑正确 业务逻辑是否正常 空指针问题、逻辑不正确等  
代码风格一致 代码风格与应用整体风格一致 代码风格不一致(如)  
代码复杂度 圈复杂度 大量嵌套if导致非常复杂等  
架构设计 关注分层 分层是否合理、是否存在跨层调用 分层混乱、跨层调用
关注扩展性 扩展适配 硬编码扩展性低  
业务域划分 业务域划分清晰 业务域划分混乱  
性能问题 SQL 索引设计、是否存在慢SQL语法 索引未设计、慢SQL用法如like %xxx语句等
缓存设计 添加缓存、是否存在缓存击穿问题 该加而未加缓存、缓存击穿问题等  
安全性问题 是否存在安全风险 文件上传验权、越权访问问题 文件上传未验权、越权访问数据等

ContactAuthor