Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

协作与代码审查

复习

  • 版本控制:保存变更、支持多人并行
  • 分解、模块与接口:模块化分工
  • 契约、错误与异常:明确责任

TL;DR

  • 多人协作需要规则:谁改了什么、如何合入
  • 代码审查让代码在被合并前被别人看过
  • 审查能发现错误、传播知识、统一风格
  • 它是质量与团队成长的共同手段

正文

  版本控制让多人可以并行工作。可代码终究是人写的、给人看的——一群人如何高效、可靠地合作,还有不少讲究。

协作的挑战

  多人一起写代码,会遇到一些天然的问题:

  • 理解:别人写的代码,你看得懂吗?
  • 风格:每个人习惯不同,代码会不会乱成一团?
  • 冲突:两人改了同一处,怎么处理?
  • 质量:谁能保证每一份改动都是靠谱的?

  版本控制解决了“合并”层面的问题,但“质量”和“理解”,还需要另一项实践——代码审查(code review)。

代码审查:让代码被看见

  代码审查的做法是:一份改动在正式合入之前,先由其他人看过、提出意见。

  它带来的好处,往往超出“找 bug”本身:

  • 发现错误:多一双眼睛,就多一层把关
  • 传播知识:作者讲清思路,审阅者学到新东西,团队的知识不再只在一个人脑子里
  • 统一风格:大家逐渐形成一致的写法,代码更整齐
  • 集体负责:审查过的代码,是团队共同认可的,而不是某个人的“私产”

  可以说,代码审查既提升了代码质量,也提升了团队本身

有些约定是必要的

  多人协作,离不开一些共同的约定:代码风格、提交规范、审查流程、分支策略……这些约定可能显得琐碎,却能让协作顺畅很多。

  这又回到了我们熟悉的主线:接口与约定,让独立的个体能够高效地拼接在一起。 只不过这次,被“约定”连接起来的,是人。

思考题 1

  代码审查有哪些好处?

思考题 2

  多人协作时,为什么需要一些共同约定?

小结

知识点

  • 多人协作面临理解、风格、冲突与质量挑战
  • 代码审查在合入前由他人检查改动
  • 审查能找错、传知识、统一风格、促进集体负责
  • 共同约定让协作更顺畅

参考资料

  1. Wikipedia(zh):代码审查:合并前由他人检查代码改动
  2. Wikipedia(zh):版本控制:支持多人协作的基础工具

思考题答案(仅供参考)

思考题 1

  它能发现错误(多一层把关)、传播知识(作者与审阅者互相学习)、统一风格(形成一致的写法),并让代码成为团队共同认可的成果。既提升了代码质量,也促进了团队成长。

思考题 2

  因为一群人的习惯和思路各不相同。约定代码风格、提交流程、审查与分支规则等,能减少误解与冲突,让各自独立的改动顺利拼接、协同推进,正如接口让模块能协作一样。

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪