2.5 技术协作
← 2.4 源代码管理 | 首页 | 下一节: 2.6 DevOps 实践 →
代码审查最佳实践
撰写 Pull Request 时
- 写清楚目的:探索?简化?修复?提供足够的背景,不假设读者知道历史。
- 明确需要什么反馈:快速看一眼?深入讨论技术方案?审设计?审文档?
- 标记 WIP(Work In Progress)说明状态。
- @ 相关人员并说明为什么请他们来看。
评审时
- 先了解上下文——这个 PR 为什么存在。
- 如有强烈异议,冷静片刻再回复。
- 用"你觉得……怎么样?"代替"不要……"。
- 解释代码需修改的理由:是风格不一致?有更好的方案?还是个人偏好?
- 避免"从来不要……""绝对不行……"等夸张措辞。
- 避免"蠢""烂"等贬损用语。
- 用 emoji 缓和语气:✨ 和 👍 能有效降低文字的冷漠感。
回复评审时
- 先表达感谢,尤其是面对混合反馈时。
- 对不理解的求澄清:"我不确定你的意思,能具体说明吗?"
- 解释你的决策原因。
- 尽量回复每条评论。
- 链接到修改对应 commit:
Good call! Done in 1682851。 - 当讨论陷入僵局时,转为面对面沟通,然后写一个总结供后续参考。
结对编程(Pair Programming)
"Betty Snyder 和我,从一开始就是一对。我相信最好的程序和设计是成对完成的,因为你可以互相批评、找到彼此的错误、使用最好的想法。" —— Jean Bartik,ENIAC 首批程序员之一
"所有生产程序应由两个人坐在一台机器前编写。" —— Kent Beck
三种主要模式
| 模式 | 运作方式 | 适用场景 |
|---|---|---|
| Driver & Navigator | Driver 写代码(战术思维),Navigator 观察全局(战略思维),定期切换角色 | 日常开发 |
| Ping Pong | A 写失败测试 → B 实现使之通过 → B 写下一个测试 → 循环 | TDD 场景 |
| Strong-Style | 老手做 Navigator 口述设计,新手做 Driver 操作键盘。规则:"一个想法要从你的头脑进入计算机,必须先经过别人的手。" | 知识传递、新人上手 |
关键收益
知识分享、反思讨论、保持专注、实时 Code Review、两种思维模式互补(战术+战略)、集体代码所有权、限制 WIP 提高团队吞吐量、新成员快速融入。
常见挑战与对策
| 挑战 | 对策 |
|---|---|
| 高强度消耗精力 | 番茄钟(25 分钟工作 + 5 分钟休息),每天不超过 6 小时结对 |
| 人际关系摩擦 | 频繁角色切换,开始前讨论"怎么配合",结束时做 mini-retro |
| 会议打断 | 设定核心编码时段,作为一对一起参加会议 |
| 技能差距 | 避免 Navigator 陷入"微管理"模式——给 Driver 5 秒自己想 |
| 权力不对等 | 优势方需主动察觉并调整:分享键盘时间、鼓励对方提问 |
来源
- GitHub Blog — How to write the perfect pull request: https://github.blog/developer-skills/github/how-to-write-the-perfect-pull-request/
- Martin Fowler / Birgitta Böckeler — On Pair Programming: https://martinfowler.com/articles/on-pair-programming.html
← 2.4 源代码管理 | 首页 | 下一节: 2.6 DevOps 实践 →