← 返回博客

Code Review 实战:从 Checklist 到工程文化的落地方法

Code Review 不是"代码审查",而是"代码沟通"。本文从一份可落地的 Review Checklist 出发,讨论 Reviewer 和 Author 各自的职责边界、如何写出有效的 Review 评论、以及如何让 Review 从"门禁"变成"团队能力提升的杠杆"——适合正在推行或优化 Code Review 流程的团队。

先说结论:Code Review 是投资,不是成本

很多团队把 Code Review 当作”上线前的门禁”——CI 跑完、Review 通过、合并上线。但 Review 最大的价值不是”拦下不好的代码”,而是”让每个人的代码水平在 Review 中逐步提升”。

本文从三个层面展开:Review Checklist、Review 评论的艺术、Review 流程设计。


1. Review Checklist:看什么、不看什么

检查优先级

优先级检查项说明
P0逻辑正确性边界条件、异常路径、并发安全
P0安全性SQL 注入、XSS、权限校验、敏感信息泄露
P1可维护性命名、函数长度、重复代码、注释
P1测试覆盖新代码有没有测试、边界情况是否覆盖
P2性能不必要的循环、N+1 查询、内存泄漏
P3代码风格缩进、命名规范——交给格式化工具

不要花时间在 P3 上。代码风格是格式化工具(Prettier、ESLint、Rustfmt)的事,不是人的事。Review 时如果发现风格问题,说明 CI 里没有加格式化检查,应该在 CI 里修,不是在 Review 里修。

每轮 Review 的黄金范围

单个 PR 不要超过 400 行。超过 400 行,Review 的 bug 发现率会急剧下降,Reviewer 的疲劳度会急剧上升。

如果 PR 确实很大,建议:

  • 拆成多个小 PR,每个 PR 只做一件事
  • 或者 Author 先口头讲解设计思路,Reviewer 再 Review

2. Review 评论的艺术

评论的四种语气

类型示例效果
命令式”改成 Map”抗拒,不想改
提问式”这里为什么用 Map 而不是 Object?“思考,讨论
建议式”有个想法:要不要试试用 Map?“开放,接受
教育式”这里用 Map 的好处是 key 的顺序有保证”学习,成长

写评论的几个原则

先说好的,再提建议。 每轮 Review 至少说一句”这个设计很好”或”这个命名很清晰”。没有正面反馈的 Review 会让 Author 觉得 Review 是来找茬的。

用”我们”不用”你”。 “我们是不是漏掉了这个边界情况?” 比 “你漏掉了这个边界情况” 好得多。前者是”我们一起看”,后者是”你错了”。

明确阻塞和非阻塞。 每条评论标注是”必须改”(blocking)还是”建议改”(nit)。没有标注的评论会让 Author 不知道哪些是必须改的。


3. Review 流程设计

设定 SLA

PR 大小响应 SLA说明
≤ 100 行2 小时内小改动,快速 Review
100-400 行4 小时内正常 PR,当天完成
> 400 行建议拆 PR大 PR 当面 Review

Review 轮次控制

两轮原则:第一轮 Reviewer 提意见,Author 修改,第二轮 Reviewer 确认修改。如果超过两轮,说明沟通出了问题,建议当面聊。

工具链推荐

用途工具
格式化Prettier / ESLint(CI 自动检查)
静态分析SonarQube / CodeQL(CI 自动检查)
Review 平台GitHub Pull Request / GitLab Merge Request
Review 模板PR 模板自动加载 Checklist

总结

层面核心原则常见错误
检查范围逻辑 + 安全优先,风格交给工具花时间在缩进和命名上
评论语气提问代替命令,先说好的再提建议只有批评没有正面反馈
PR 大小不超过 400 行大 PR 一次性 Review
Review 轮次两轮原则,超两轮当面聊来回拉锯
SLA4 小时内响应拖到上线前才 Review

Code Review 做得好不好,不看它”拦下了多少 bug”,而看它”让团队的水平提升了多少”。 最好的 Review 是 Author 看完评论后说”原来还可以这样”,而不是”好的我改”。

需要技术方案咨询或团队工程实践优化?联系我们,说清你的现状与痛点,24 小时内回可行性。

相关阅读

常见问题

Code Review 应该看什么?

优先级从高到低:① 逻辑正确性——有没有边界情况没处理?条件分支是否覆盖了所有可能?② 安全——有没有 SQL 注入、XSS、权限绕过?③ 可维护性——命名是否清晰?函数是否太长?有没有重复代码?④ 测试——新代码有没有对应的测试?测试是否覆盖了边界情况?不要花时间在代码风格上(那是格式化工具的事)。

Review 评论怎么写才不伤人?

用提问代替命令。"这里为什么要用 Map 而不是 Object?" 比 "改成 Map" 好得多。用"我们"不用"你"。"我们是不是漏掉了这个边界情况?" 比 "你漏掉了这个边界情况" 好得多。先说好的再提建议。"这个设计很清晰,有个小建议……" 比直接提意见好得多。

Review 太慢怎么办?

先检查是不是 PR 太大了。单个 PR 超过 400 行改动,Review 效率会急剧下降。建议:① 限制 PR 大小(不超过 400 行或不超过 10 个文件);② 设定 SLA(比如 4 小时内必须开始 Review);③ 小 PR 可以异步 Review,大 PR 建议面对面或视频 Review;④ 如果 Reviewer 实在没时间,Author 可以主动走过去口头讲解,Reviewer 只需要点头或摇头,效率最高。

团队没时间做 Code Review 怎么办?

没时间做 Review 是因为没有为 Review 留时间。解决办法:① 把 Review 纳入 Sprint 的"开发工时"估算——写代码的时间包含 Review 别人的时间;② 设定 Review SLA(4 小时内响应),超过 SLA 的 PR 可以直接合并但标注"未经 Review";③ 从"全员 Review"改为"指定 Reviewer"——减少 Review 人数,降低协调成本。

本文来自 AI Enable Harness 一线交付实践。需要同类系统或优化服务?

📡 本文同步发布平台: CSDN 知乎

订阅博客更新

新文章发布后第一时间邮件通知。不定期发送,不推销。

订阅 →