结对编程 vs. 代码复查

  • Chris Sims
  • 李剑

2009 年 1 月 19 日

话题:敏捷文化 & 方法

结对编程、代码复查、鼓励知识共享,这些都可以有助于提升软件质量。当敏捷 vs.精益XP vs.Scrumvi vs.Emacs的争论渐渐消隐,开发人员又对结对编程代码复查的价值所在展开了争论。Theodore Nguyen-Cao在他的文章中将代码复查者比作鸡,结对编程者比作猪。

在敏捷论文中常常会提到小鸡和猪的故事。在用熏肉和鸡蛋做的早餐中,鸡只是参与,而猪则是付出。所以,“猪”这个词用来形容对某件事情付出全部精力的人,而“鸡”虽然参与了,但是投入的程度比“猪”小。

做代码复查的时候,大家一起坐下来,看某个人的代码。每个人都会提出自己的意见,但是没人每天和那段代码一起工作。看上去每个人都参与了代码复查的过程,但是没人对它有铁定的兴趣。他们只是看看代码,互相问问:“这段代码看上去怎么样?有问题么?”这个出发点很消极。但是,结对编程的人会全心投入到手头的动作上。他们所写下的代码、做出的设计等等都会立刻被用到。每个人都在积极参与,对手头的任务持有浓厚的兴趣,因为他们在一起攻克难题。

Theodore还指出,在结对编程中的反馈环要比代码复查紧密得多。在结对编程的时候,两个人一直都在写代码、复查代码、修改代码。而代码复查就把复查代码的时间推后了一些,一般都是作者觉得代码可以用以部署以后才做代码复查。

众所周知,随着发现问题到修复问题之间的时间增加,修复的成本也会以指数级急剧攀增。所以,在结对编程中发现的问题,它的成本要远远小于代码复查中发现的问题。当然,这二者的成本也更是远远小于让 bug 留到发布以后才被发现。与其走到最后一步,还不如既做结对,又做代码复查。

你是喜欢结对编程,还是喜欢代码复查?两种方式都在用,还是都不用?请留下宝贵意见,与其他读者共享。

查看英文原文Pair Programming vs. Code Review

敏捷文化 & 方法