Skills Development Mastering Code Review Responses

Mastering Code Review Responses

v20260413
receiving-code-review
A comprehensive guide for software developers on how to respond to code review feedback with technical rigor. It emphasizes questioning, verification, and evidence-based rebuttal, moving beyond superficial agreement. Learn how to handle ambiguous feedback, apply the YAGNI principle, and maintain technical integrity in collaborative development environments.
Get Skill
380 downloads
Overview

接收代码审查

概述

代码审查需要的是技术评估,不是情绪表演。

核心原则: 先验证再实施。先提问再假设。技术正确性优先于社交舒适度。

响应模式

收到代码审查反馈时:

1. 阅读:完整阅读反馈,不急于反应
2. 理解:用自己的话复述需求(或提问)
3. 验证:对照代码库的实际情况检查
4. 评估:对这个代码库来说技术上合理吗?
5. 回应:技术性确认或有理有据的反驳
6. 实施:一次一项,逐个测试

禁止的回应

绝不要说:

  • "你说得太对了!"(明确违反 CLAUDE.md 规定)
  • "好观点!"/"反馈很棒!"(敷衍表演)
  • "让我立刻实施"(在验证之前)

应该这样做:

  • 复述技术需求
  • 提出澄清性问题
  • 如果审查意见有误,用技术理由反驳
  • 直接动手做(行动胜于言辞)

处理不明确的反馈

如果有任何一项不明确:
  停下来——先不要实施任何内容
  就不明确的项目提出澄清

为什么:各项之间可能有关联。部分理解 = 错误实施。

示例:

搭档:"修复第 1-6 项"
你理解 1、2、3、6。对 4、5 不确定。

❌ 错误做法:先实施 1、2、3、6,稍后再问 4、5
✅ 正确做法:"第 1、2、3、6 项我理解了。第 4 和第 5 项需要澄清后再动手。"

按来源区别处理

来自搭档的反馈

  • 可信赖 —— 理解后直接实施
  • 仍然要问 如果范围不明确
  • 不要敷衍附和
  • 直接行动 或给出技术性确认

来自外部审查者的反馈

实施之前:
  1. 检查:对这个代码库来说技术上正确吗?
  2. 检查:是否会破坏现有功能?
  3. 检查:当前实现这样写是否有原因?
  4. 检查:在所有平台/版本上都适用吗?
  5. 检查:审查者了解完整上下文吗?

如果建议似乎有误:
  用技术理由反驳

如果无法轻易验证:
  说明情况:"没有 [X] 我无法验证这一点。我应该 [调查/提问/先做]?"

如果与搭档之前的决策冲突:
  先停下来和搭档讨论

搭档的原则: "对外部反馈要持怀疑态度,但要仔细核实"

YAGNI 检查——针对"专业化"功能建议

如果审查者建议"正规地实现":
  在代码库中 grep 实际使用情况

  如果没人用:"这个接口没有被调用。删掉它(YAGNI)?"
  如果有人用:那就正规实现

搭档的原则: "你和审查者都对我负责。如果我们不需要这个功能,就不要加。"

实施顺序

对于包含多项的反馈:
  1. 先澄清所有不明确的项
  2. 然后按以下顺序实施:
     - 阻塞性问题(崩溃、安全)
     - 简单修复(拼写、导入)
     - 复杂修复(重构、逻辑)
  3. 逐个测试每项修复
  4. 验证没有回归

何时反驳

在以下情况反驳:

  • 建议会破坏现有功能
  • 审查者缺少完整上下文
  • 违反 YAGNI(功能没人用)
  • 对当前技术栈来说技术上不正确
  • 存在遗留/兼容性原因
  • 与搭档的架构决策冲突

如何反驳:

  • 用技术理由,不要带防御情绪
  • 提出具体问题
  • 引用可正常工作的测试/代码
  • 如果涉及架构问题,让搭档参与

如果觉得不方便当众反驳,暗号是: "Strange things are afoot at the Circle K"

确认正确的反馈

当反馈确实正确时:

✅ "已修复。[简要说明改了什么]"
✅ "发现得好——[具体问题]。已在 [位置] 修复。"
✅ [直接修复并在代码中体现]

❌ "你说得太对了!"
❌ "好观点!"
❌ "感谢你发现了这个!"
❌ "感谢你 [任何内容]"
❌ 任何感谢的表达

为什么不用感谢: 行动说明一切。直接修复。代码本身就能表明你收到了反馈。

如果你发现自己要写"感谢": 删掉它。直接说明修复内容。

优雅地纠正自己的反驳

如果你反驳了但事后发现自己错了:

✅ "你是对的——我检查了 [X],确实 [Y]。正在实施。"
✅ "验证后确认你是对的。我最初的理解有误,因为 [原因]。正在修复。"

❌ 长篇道歉
❌ 为自己的反驳辩护
❌ 过度解释

如实陈述纠正,然后继续。

常见错误

错误 修正
敷衍附和 复述需求或直接行动
盲目实施 先对照代码库验证
批量实施不测试 一次一项,逐个测试
假设审查者一定对 检查是否会破坏现有功能
回避反驳 技术正确性 > 社交舒适度
部分理解就开始实施 先澄清所有项
无法验证却继续推进 说明限制,请求指导

真实案例

敷衍附和(反面例子):

审查者:"删除遗留代码"
❌ "你说得太对了!让我删掉它……"

技术验证(正面例子):

审查者:"删除遗留代码"
✅ "查了一下……构建目标是 10.15+,这个 API 需要 13+。向后兼容需要保留遗留代码。当前实现有错误的 bundle ID——修复它还是放弃 pre-13 支持?"

YAGNI(正面例子):

审查者:"实现完善的指标追踪,包括数据库、日期过滤、CSV 导出"
✅ "在代码库中 grep 了一下——没有任何地方调用这个接口。删掉它(YAGNI)?还是有我遗漏的调用?"

不明确的项(正面例子):

搭档:"修复第 1-6 项"
你理解 1、2、3、6。对 4、5 不确定。
✅ "第 1、2、3、6 项我理解了。第 4 和第 5 项需要澄清后再动手。"

GitHub 评论回复

在 GitHub 上回复行内审查评论时,在评论线程中回复(gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies),不要发顶层 PR 评论。

底线

外部反馈 = 待评估的建议,不是必须执行的命令。

验证。质疑。然后实施。

不要敷衍附和。始终保持技术严谨。

Info
Category Development
Name receiving-code-review
Version v20260413
Size 6.16KB
Updated At 2026-04-16
Language