- 审查清单 - 代码结构 - 超长代码 - 代码层次嵌套过深 - 函数入参是否过多 - 循环条件需要有跳出点 - if是否有对应else - 是否有重复代码 - 代码安全性 - I/O流是否关闭 - 资金计算使用Double - 是否有超大临时对象 - 线程池参数 - 异常处理 - 日志记录 - 并发问题 - 参数检查 - 远程服务出入参实现Selialization并自定义serialVersionUUID - 是否依赖SNAPSHOT版本类库 - 代码性能 - 长SQL - SQL索引 - 成熟类库替代自己实现的代码 - 考虑单例模式 - 考虑线程池 - 考虑NIO - 考虑锁优化 - 代码注释 - 类和方法注释 - 注释是否表达准确 - 是否存在FIXME和TODO - 是否包含边界值及对异常情况说明 - 单元测试 - 是否有可测试性 - 新代码单元测试 - 单元测试是否覆盖所有场景 - 代码优化 - 枚举替代常量 - 是否包含魔法值 - 使用Option替代NPE检查 - 用Stream替代for循环 - 使用设计模式 - 其他 - 代码逻辑 - 业务功能 - 可读性、可测试性 - 审查工具 - Phabricator - Gerrit - Code Stiker - 关注改动点 - 日常审查 - 一次审查代码量200-400 - ![image.png](../assets/image_1732609526699_0.png)