谈谈结对编程

什么是结对编程?

我们来看一下百度百科对结对编程的定义:

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。

在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

以前我一直都是自己闷头敲代码,对“结对编程”这个词虽然早就听说过,但从来没有一个明确的认识或体验。而今天我跟同事一起 review 一个功能实现的时候,我们居然一起在同一台机上轮流敲上了代码,之后我才突然想:“我们这样是不是就是传说中的结对编程了呢?”

对照百度百科的定义,其实我们的实践不是真正的结对编程,只是一起写代码而已,完全没有体现出结对编程的目的。但我这并不能阻止我思考结对的一些问题和好处。

首先,说一下好处,两人一起写代码,如果大家都对功能和代码逻辑都有差不多水平的认识,是可以一起交流提高的。当某个人写出来一段很烂的代码的时候,另一个人马上就能发现问题;当遇到一个技术难点的时候,两人也可以马上就讨论出一个可行的解决方案。总体来说,对代码的质量和问题的处理效率都会得到较大的提高,而且对双方来说也是一个很好的学习机会。

那么,一起写代码又会带来什么问题呢?显而易见的,两个人做同一个功能,人力成本上就显得有点浪费了。这个问题可能也是导致结对编程没有在各大公司里盛行的原因。特别是在赶进度急着上线的项目里,公司恨不得把一人当两人用,怎么可能让两人来处理同一个功能呢?其次,程序员之间能力水平以及对功能逻辑和代码的熟悉程度不同,很容易导致两人之间的沟通不顺畅,再加上大多数程序员性格比较内向,在沟通能力方面还是比较欠缺的,因此,很可能两人一起的产出还不如让其中一个人自己做的快。

个人觉得,比起结对编程这种同步的操作,还不如异步做代码 review 更实用。当一个人做完功能后,把自己的实现逻辑都用流程图或文字描述清楚,备注在对应的需求下面,提交代码时也加上必要的注释,然后交给另一个人 review 。 reviewer 根据大家总结出来的 review 方法,弄一张 checklist 一项项检查代码提交人的功能逻辑是否符合需求,实现上有没有考虑性能、扩展性等等这些非功能性的需求,然后跟代码提交人沟通交流,互相熟悉业务和学习提高。

以上只是本人的一些浅见,如果你对这个话题有更多的见解,欢迎给我留言交流。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,949评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,398评论 2 59
  • 很长一段时间 浑浑噩噩 就守着这么一座空府大院 却不知道自己在等谁。
    水落蔷薇阅读 194评论 0 0
  • 月色深了 他一个人坐在站台,久不言语 我便上前问他怎么了 他奇怪地看向我这个有趣的陌生人,说没事 原来也不是每一个...
    叁景阅读 451评论 0 0
  • 就在昨天,我的个人公众号拿到了原创标,跟朋友们讨论了一下才知道我拿标的速度算是快的,同时我在后台也收到很多朋友关于...
    萌萌视觉笔记阅读 1,288评论 0 3

友情链接更多精彩内容