结对编程、代码复查、鼓励知识共享,这些都可以有助于提升软件质量。当敏捷 vs.精益, XP vs. Scrum , vi vs. Emacs 的争论渐渐消隐,开发人员又对结对编程和代码复查的价值所在展开了争论。 Theodore Nguyen-Cao 在他的文章中将代码复查者比作鸡,结对编程者比作猪。
在敏捷论文中常常会提到小鸡和猪的故事。在用熏肉和鸡蛋做的早餐中,鸡只是参与,而猪则是付出。所以,“猪”这个词用来形容对某件事情付出全部精力的人,而“鸡”虽然参与了,但是投入的程度比“猪”小。
做代码复查的时候,大家一起坐下来,看某个人的代码。每个人都会提出自己的意见,但是没人每天和那段代码一起工作。看上去每个人都参与了代码复查的过程,但是没人对它有铁定的兴趣。他们只是看看代码,互相问问:“这段代码看上去怎么样?有问题么?”这个出发点很消极。但是,结对编程的人会全心投入到手头的动作上。他们所写下的代码、做出的设计等等都会立刻被用到。每个人都在积极参与,对手头的任务持有浓厚的兴趣,因为他们在一起攻克难题。
Theodore 还指出,在结对编程中的反馈环要比代码复查紧密得多。在结对编程的时候,两个人一直都在写代码、复查代码、修改代码。而代码复查就把复查代码的时间推后了一些,一般都是作者觉得代码可以用以部署以后才做代码复查。
众所周知,随着发现问题到修复问题之间的时间增加,修复的成本也会以指数级急剧攀增。所以,在结对编程中发现的问题,它的成本要远远小于代码复查中发现的问题。当然,这二者的成本也更是远远小于让 bug 留到发布以后才被发现。与其走到最后一步,还不如既做结对,又做代码复查。
你是喜欢结对编程,还是喜欢代码复查?两种方式都在用,还是都不用?请留下宝贵意见,与其他读者共享。
查看英文原文: Pair Programming vs. Code Review
评论