谈谈结对编程

什么是结对编程?

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

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

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

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

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