第一次接触这种合作方式,两个人共用一台电脑,一个说一个敲,一起交流完成任务。按书上的话说就像开飞机的飞行员和领航员,通力合作完成任务,不过个人觉得在课程实际操作中,我和队友更像是程序猿和程序猿鼓励师啊!
写代码与其说是一种工作需求倒不如说是个人行为,因为每个人都有不同的行为习惯,放在这里就是指代码风格,小到换行缩进变量命名,大到函数封装分行注释,都是不一样的,这是每个人长期以来养成的一种习惯,是不容易在短期内改变的,而一旦选择了结对编程,就需要两个人相互磨合,相互包容,这点无关双方编程能力的高低,而完全是性格,思想,行为的碰撞与融合。
拿课程实验一来说吧,要求两人结对编程完成多项式的判断求导求值。从开始构思算法到实际的代码书写,可以明显感觉到这种方式有以下优点:
- 集思广益,开阔思路。“如果你有一种思想,他有一种思想,交换一下,你就有了两种思想”这种结对方式容易在算法设计阶段碰撞出火花,从而获得一种较优化,易实现的算法。
- 高效产出,事半功倍。由于两人共同完成,具有一定的督促意味,可以更专注地完成任务;其次领航员作为“旁观者”可以及时发现一些错误并提示纠错,使得代码出错少,质量更高。
- 通力合作,省时省力。合作的方式使得原本一个人的任务由两人共同完成,而且过程中的及时代码纠错、互换角色书写等摆脱了个人完成易疲劳易走神的状况,使得任务完成更加紧促,节省大量时间。
个人觉得这种方式比较适合维护性、测试性、探索性意味较弱的项目,而对于该方式何时为有效的方法,如图示,本文不述,具体可参见《什么时候该采用结对编程》
从决定结对编程到真正成为默契的搭档是有极长的路要走的,就像舞伴之间的磨合一般,从会踩到对方脚的蹩脚舞伴到最终可以花式跳舞乃至于一个眼神就心领神会,往往需要两人经年的试跳练习方可,所以结对编程,贵在编程啊!