代码评审模板 - bettermorn/ACMWDevHubPPT GitHub Wiki

0. 评审注意事项

  • 建议时长 1.5-2小时
  • 针对业务逻辑复杂的、有技术难度的、耗费资源多的、能力较弱的工程师所写代码。
  • 评审前需做好准备
  • 填写说明:对每一个检查项目,根据具体情况填写结果,如“是、否、不适用、具体的名称”等。

1.关于代码

检查项目 结果 说明
模块名
审查人员
版本 1.0
日期 YYYY-MM-DD
程序设计语言
作者
文件数

2.自动检查

检查项目 结果 说明
代码通过编译,没有任何错误
代码通过编译,没有任何警告信息
存在单元测试
代码处于源代码版本控制之下
使用检查工具对代码进行了检查
检查工具名称
使用检查工具检查的结果

样例

检查项目 结果 说明
代码通过编译,没有任何错误
代码通过编译,没有任何警告信息
存在单元测试
代码处于源代码版本控制之下
使用检查工具对代码进行了检查
检查工具名称 SonarLint
使用检查工具检查的结果 Error(0) 在VS Code中使用SonarLint,检查结果在 Problems 面板上可以看到为 Error(0)

3.设计

检查项目 结果 说明
代码已完成(相对于软件功能定义来说)
选择的算法模型很好
采用了恰当的设计模式
任何缺失的功能都已在代码中清晰的标出
代码的结构很好
存在设计文档
代码与这些文档相符

样例

检查项目 结果 说明
代码已完成(相对于软件功能定义来说)
选择的算法模型很好 不适合
采用了恰当的设计模式
任何缺失的功能都已在代码中清晰的标出 不适合
代码的结构很好
存在设计文档
代码与这些文档相符

4.对代码编写质量的总体意见

风格

检查项目 结果 说明
代码的布局很清晰
代码遵循项目的风格准则
存在良好(无歧义)的公共API
选择的名称表达清晰和易理解

样例

检查项目 结果 说明
代码的布局很清晰
代码遵循项目的风格准则
存在良好(无歧义)的公共API
选择的名称都很好

防御性编程

检查项目 结果 说明
避免空指针
数据类型选择正确并使用类型检查
所有输入都经过验证
限制资源使用 不适用
控制并发
避免循环引用
不存在特定编译器功能(C/C++)

样例

检查项目 结果 说明
避免空指针
数据类型选择正确并使用类型检查
所有输入都经过验证
限制资源使用 不适用
控制并发
避免循环引用
不存在特定编译器功能(C/C++)

错误处理

检查项目 结果 说明
错误情况都得到了处理
使用断言来验证逻辑
代码是异常安全(exception safe)的
错误将被传播,而不会被隐藏
本地有日志文件
没有任何资源被泄露
代码使用多线程
它是线程安全的
不会发生死锁

样例

检查项目 结果 说明
错误情况都得到了处理
使用断言来验证逻辑
代码是异常安全(exception safe)的
错误将被传播,而不会被隐藏
本地有日志文件
没有任何资源被泄露 未知
代码使用多线程 不适用
它是线程安全的 不适用
不会发生死锁

结构

检查项目 结果 说明
不存在冗余的代码
不存在剪切粘贴式的编程

样例

检查项目 结果 说明
不存在冗余的代码
不存在剪切粘贴式的编程

5.代码审查 清单

语句级审查

文件 问题 说明

样例

文件 问题 说明
223 if条件判断语句过长
1171 switch语句可以优化
2502 if条件判断语句过长
使用System.err输出,未用log

6.跟踪调查

评审结论

检查项目 结果 说明
代码质量较好
重新编写并验证
重新编写并重新审查

样例

检查项目 结果 说明
代码质量较好 是或否
重新编写并验证 完成,未完成
重新编写并重新审查 通过,未通过

说明

代码质量较好为“否”时,需要“重新编写并验证”和“重新编写并重新审查”。

在这里记录审查的结果

检查项目 结果 说明
审查
校验

样例

检查项目 结果 说明
审查 结果1:存在问题,需重新校验并重新审查结果2:通过审查
校验 结果1:未通过校验结果2:通过校验
⚠️ **GitHub.com Fallback** ⚠️