Skip to content
返回质量保障

审查文化

建审查是协作改进非守门战或橡皮图章的文化。

为什么

代码审查文化定过程产更好代码还是仅更慢代码。守门文化——审查是作者须过的测试——使作者防御、审查者对立、反馈辩论而非收。橡皮图章文化——批准自动——使审查无意义、bug 发、团队学审查是形式。学习文化——审查是改进代码的协作——使作者接受、审查者建设、反馈被收和行动。差非清单或工具;是审查为何的共享信念。学习文化更快产更好代码,因作者和审查者同侧(代码的)、反馈关于代码(非作者)、目标是改进(非批准)。这文化以身作则建——技术负责人友善审查、问问题、谢审查者、视每评论为学习机会。

何时使用

始终——文化建于每审查交互、每评论、每回应非一次性训练。

如何做

1. 将审查框为协作非守门
   - "一起改进这个"非"证这正确"
   - 审查者和作者同侧: 代码的
   - 目标是更好 PR 非批准 PR

2. 以身作则(技术负责人和资深)
   - 友善审查: 问问题、提例、解释为什么
   - 优雅回应: 谢审查者、考虑反馈
   - 认错: "好抓、我漏了"建信任
   - 团队跟榜样非规则书

3. 使审查为学习机会
   - 分享知识: "我见这模式负载下失败,原因..."
   - 问问题: "缓存冷时怎样?"教作者思考
   - 解释推理: "我们用事务因若第二个写失败..."
   - 作者学、下 PR 更好、团队成长

4. 分开人和代码
   - 评代码: "这函数太长"
   - 非人: "你写长函数"
   - 用"我们"和"代码"非"你"和"你的代码"
   - 假设作者聪明且尽力

5. 庆祝好审查
   - 谢抓生产 bug 的审查者
   - 突出教团队新东西的审查
   - 使审查为过程可见、有价值的部分
   - 庆祝的重复

示例

// 守门文化(坏):
// 审查者: "这错了。修。"
// 作者: "能用、我测了。"
// 审查者: "仍错。我阻这。"
// 作者: "好、你要什么?"
// 审查者: "自己想。"
// 结果: 作者怨修、学无、未来避那审查者。

// 学习文化(好):
// 审查者: "我觉得这里有竞条件。若两请求同时更新同记录,
//   第二个覆第一个。你觉得?"
// 作者: "哦、未考虑那。该如何处理?"
// 审查者: "可用乐观锁——加版本字段仅版本匹配时更新。要我示例吗?"
// 作者: "好、我加版本字段和并发更新情况测试。"
// 结果: 作者学新模式、代码更好、下 PR 作者正确处理并发。

// 技术负责人示范文化:
// "谢审查!你对、我漏了 null 检。
//  我加了它和 null 情况测试。好抓。"
// (非: "不会 null、调用者保证。")

// 团队会庆祝好审查:
// "本周 @alice 的审查发前抓了 SQL 注入漏洞。
//  那审查救我们于潜在入侵。谢 Alice 彻底审查。"
// (庆祝的重复。)

// 新开发者入文化:
// "我们审每 PR、目标是一起改进代码。
//  你首 PR 会得很多评论——那正常、是我们分享知识的方式。
//  每评论关于代码非你。问问题、我们解释推理。"

常见问题

  • ⚠资深审查者把审查当作者须过的测试——作者变防御、反馈辩论、初级开发者停开 PR 避对立审查。
  • ⚠批准自动的橡皮图章文化——审查者不读 diff 点批准、bug 发、团队学审查是加延迟无价值的形式。
  • ⚠个人批评("你总犯这错")使作者防御——有效技术点失于情绪反应、作者不学教训。
  • ⚠无反馈文化——审查者无评论、静默批准、作者无学习、无改进、不知代码好还是仅幸运。

最佳实践

  • ✓将审查框为改进代码的协作非过的测试——审查者和作者同侧、目标是更好 PR 非批准 PR。
  • ✓以身作则——技术负责人和资深友善审查、问问题、谢审查者、认错、团队跟榜样因文化由行为建非规则。
  • ✓使每审查为学习机会——分享推理、解释为什么、作者学、下 PR 更好、团队随时间成长。
  • ✓公开庆祝好审查——谢抓 bug 的审查者、突出教团队的审查、庆祝的重复。