📚 技术人软技能系列 #软技能 #代码评审 #团队协作

代码评审怎么做:高质量 CR,不带情绪提意见

CR 是团队的镜子:高质量评审靠的是「问题清晰、情绪为零」。讲评审看什么、怎么提意见不伤人、怎么接意见不内耗。

✍️ diunilaomei 📅 2025-10-12 📝 约 1069 字 ⏱️ 约 3 分钟
📑 章节目录
字号

软技能系列第 5 章。代码评审大概是技术团队里「天天做、却几乎没人教」的事——多数人靠模仿前任的风格,要么太松(走过场),要么太冲(把 CR 变成战场)。这章把它当一门沟通手艺来讲。

先定基调:CR 的目标不是「挑错」,是「一起把代码变好」

评审里最伤人的不是「代码有问题」,是「你这个人有问题」的暗示。高质量 CR 有三个原则:

  1. 问题指向代码,不指向人:说「这里的状态处理有并发风险」,不说「你写的代码有问题」。
  2. 评论可执行:每条意见讲清「为什么」和「期望改成什么样」,而不是「感觉不对」。
  3. 记得肯定:真正好的地方值得一句「这个设计不错」——只提问题的评审人,最后会发现没人愿意被评。

评审看什么(按优先级,别眉毛胡子一把抓)

  • 正确性与边界:并发、空值、异常路径、幂等——这是评审的核心价值,比风格重要一百倍。
  • 可维护性:命名是否名实相符、职责是否清晰、三个月后新同学能不能读懂。
  • 性能与安全:明显的 N+1、循环里发请求、SQL 注入/越权这类红线。
  • 风格问题:交给工具(lint、格式化)解决,别在评审里争空格——把评审火力留给机器管不了的事。

心法:评审意见要分「必须改 / 建议改 / 可选」。必须改(正确性、安全)才坚持;建议改讨论;可选让作者决定。什么都坚持的评审人,会让作者连正确的代码都不敢写。

提意见的三个句式(带情绪归零)

  • 疑问代替断言:「这里如果并发调用,状态会不会乱?」——让作者自己发现,比直接下结论更有效。
  • 给上下文再给建议:「参考现有订单模块的做法,这里用幂等键会更稳」——意见带依据才有分量。
  • 承认不确定性:「这块我不确定,建议加个边界测试验证一下」——真诚的不确定比假装权威更可信。

接意见的正确姿势(作者视角)

  • 先理解,再反驳:收到意见先问「他为什么这么想」,七成意见背后是真实问题;两成是偏好,可以讨论;一成确实是他没看懂,解释清楚即可。
  • 不要防御性拉满:「这是历史代码」「那边也这么写的」是 CR 里最没营养的回复。接得住批评的人,在团队里的可信度反而最高。
  • 把「修改」当成学习信号:同一个人反复在并发上栽跟头,说明该补这块了,而不是「他总针对我」。

让 CR 流程真正跑起来的配套

  • 小 PR 是 CR 的生命线:500 行以内的 diff 才有高质量评审的可能,5000 行的 PR 等于没人评审。
  • CR 要进发布流程:不评审不合入,而不是「有空评一下」。
  • 新人保护期:新同学的 PR 先在组内过一遍再发全组,别让第一次 CR 变成劝退现场。

落地清单

  • 意见分三档:必须改/建议改/可选
  • 问题指向代码,评论可执行
  • 用疑问句式让作者自己发现问题
  • 值得肯定的地方说出口
  • PR 控制在可评审的规模

相关:跨团队协作故障沟通与复盘不甩锅(软技能系列后续)

相关阅读

栏目全部 →