软件开发不只写代码那么简单——结对编程和代码审查

结对编程

首先来说一下结对编程的表象:
两个开发者在同一台机器上工作。他们都有各自的键盘和鼠标。就好像飞机的驾驶员和领航员,驾驶员负责编码,领航员的职责是阅读,核对,拼写检查以及在脑子里测试代码。总结就是一个人在编写代码的同时另一个人在检查核对所写的代码。
社区中对结对编程有一些正面的看法,我在这里整理和总结了一下:

  • 缩减后期bug出现的概率,因为两个人多了一双眼睛。
  • 两个人总有不同的技能,技能的传递往往发生在结对中。当一个人向另一个展示一些技巧的时候,实际上他们在进行临时的培训。
  • 保证一个团队当中有超过一个的人熟悉这块代码。
  • 交换的结对编程可以彼此熟悉,加深交流。

结对的成本

结对编程固然有很多的好处,但是在软件开发中我们还需要考虑成本的问题。对于同一个业务开发你可能需要投入两倍的人力成本去完成这个结对编程。
加入了人力成本的因素之后,结对编程的优点也就不是很突出了。

代码审查

经过笔者工作的亲生经历,我可以毫无保留的担保代码评审的价值。其实,结对编程的很多好处都可以通过可靠的同级评审来获得。
结对编程的优势在于它的即时性,代码审查是需要编码开发的后期来进行实现的。但是如今有许多的工具可以利用来节省代码审查的人力和时间:

  • sonar扫描——发现编程中一些常见的隐藏bug
  • checkstyle——代码格式检查和拼写检查
  • gerrit——同级评审制度

喜忧参半

代码审查解决了结对编程中需要的高人力成本,同时也保证了代码的检查完成。
但是,似乎没有人愿意花时间去真正理解那些并不简单的新代码,所以反馈通常是比较笼统的。而且那些所谓的工具只是发现常见通用的问题,对于具体的业务代码,你仍然需要花费时间去审查。
人要在原有的代码基础上添加功能或者修改错误的时候,他们通常会有很多的反馈,甚至推到重来的冲动。所以代码审查真的是一项需要耐心和忍耐力的活。

显示 Gitment 评论