Skip to content
返回质量保障

审查礼仪

及时审查、优雅回应反馈、保持审查聚焦代码非人。

为什么

代码审查既是技术也是社交过程,礼仪定是协作改进还是对立战。最常见礼仪失败是延迟——PR 放 3 天因审查者"忙"、作者阻、功能滑、团队速度降。第二是防御——审查者留评论、作者争而非考虑、审查变赢辩论非解问题。第三是个人化——"你总写这 bug"使作者防御而"这模式有 bug"保持聚焦代码。好礼仪非关于好;关于有效——及时、聚焦和尊重的审查更快产更好代码,因反馈被收和行动而非辩论和延迟。

何时使用

每审查交互——请求审查时、审查时、回应反馈时、批准或请求变更时。

如何做

1. 及时审查(4-24 小时内)
   - 放 3 天的 PR 阻作者慢团队
   - 若今天不能审查,说并建议另一审查者
   - 小 PR(< 200 行)应同天审查

2. 保持 PR 小且聚焦
   - 每功能或修复一 PR 非杂物变更
   - 目标 < 400 行——大 PR 不能彻底审查
   - 若 PR 大,请作者拆

3. 优雅回应反馈
   - 谢审查者抓 bug——他们刚救你于生产问题
   - 若不同意,用证据解释非情绪
   - 若审查者错,友善教——"实际这安全因..."
   - 不为赢争——为找对答案争

4. 保持评论聚焦代码
   - 评代码非作者: "这函数太长"非"你写长函数"
   - 用"我们"建议: "我们可提取为 helper"非"你应提取"
   - 避"总"和"永不"——听起来控且通常错

5. 代码够好时批准
   - 不因 nit 阻——批准留 nit 为非阻评论
   - 完美是好的敌人——带 nit 合并的 PR 比阻的 PR 好
   - 若代码正确、安全且测试了,批准

示例

// 请求审查(作者礼仪):
// PR 描述:
"""
## 什么
为用户注册端点加输入验证。

## 为什么
当前端点接受任何字符串为邮箱,非有效邮箱时致数据库错误。

## 如何
插入数据库前用 zod 验证邮箱格式。

## 测试
- 加了有效和无效邮箱单元测试
- 手动测 API: POST /register { email: "非邮箱" }

## 清单
- [x] 加测试
- [x] 无破坏变更
"""

// 及时审查(审查者礼仪):
// - 小 PR 4 小时内审、大 PR 24 小时内
// - 若今天不能审: "今天不能审,能问 @teammate 吗?"
// - 不让 PR 静默放 3 天

// 回应反馈(作者礼仪):
// 审查者: "18 行: 邮箱为空字符串时怎样?"
// 坏回应: "不会,前端验证了。"
// 好回应: "好抓。我加最小长度检查:
//   z.string().email().min(1)。也加空字符串测试。"

// 审查者: "考虑此处用事务。"
// 坏回应: "没事,操作独立。"
// 好回应: "你对,若第二个插入失败第一个已提交。我包两在事务中。"

// 保持评论聚焦(审查者礼仪):
// 坏: "你总忘处理错误情况。"
// 好: "此处错误情况未处理。数据库不可用时该怎样?"

// 坏: "这函数太长,你应拆。"
// 好: "这函数 80 行处理三个关注(验证、数据库、邮件)。
//   能否拆为三个小函数提高可读性?"

常见问题

  • ⚠因审查者"忙"让 PR 放数天——作者阻、功能滑、团队学审查是瓶颈,停开 PR 累积未审查变更。
  • ⚠每评论争而非考虑反馈——审查者花 30 分钟辩护代码、审查花一周、团队避审那人 PR。
  • ⚠因 nit(变量命名、导入顺序)阻 PR——作者不能合并正确、测试、安全变更因风格偏好,审查过程变瓶颈。
  • ⚠不实际审查批准——审查者点"批准"为好或避冲突、bug 发、审查无价值。

最佳实践

  • ✓24 小时内审查(小 PR 同天)——及时审查保持作者不阻团队速度高,显尊重作者时间。
  • ✓保持 PR 小(< 400 行)聚焦一变更——小 PR 15 分钟彻底审、大 PR 得漏 bug 的肤浅略读。
  • ✓以谢和证据回应反馈非防御——审查者抓 bug、谢他们;若不同意用测试或参考解释非争论。
  • ✓代码正确、安全且测试时批准,留 nit 为非阻评论——完美是好的敌人,带 nit 合并的 PR 比阻功能好。