关于结对编程的感想

      结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。一人充当执行角色,只负责编程。另外则负责观察者(或导航),检测bug和把控整体设计。与两位程序员各自独立工作相比,结对编程往往只需花费大约一半的时间就能编写出质量更高的代码

      1.在开始任务之前,保持可以在两个小时完成的良好心态。例如/代码添加“操作历史”到搬运车数据库,这会对你之后操作起来很有帮助。

      2.每次的目标不要太大:比如几分钟内可以完成的。从互相鼓励集中精神开始,确保你在任何时候都明确任务

      3.互相依靠和支持如果你是执行者,当以最快的速度完成了某个程序时,往往会忽略一些问题,在这个时候,搭档就是保障。如果你是观察者,仔细审查对方的代码,考虑可能的错误,以及如何简化和改进设计。在无法读取的时候找出bug,但是不要即时就要求删改,而是等到对方专注编程之后,进行到一个程度再整体调控会有效。例如,如果你看到现在的代码没有考虑空输入,在一张纸上写下,“添加单元测试的零输入。” 观察者和执行者都是灵活互动的,而不是机械一成不变的完成任务即可。观察者并不需要去研究小细节,但是要考虑更高的层次。例如“看起来不错,但是如何处理遇到空指针的情况?”听起来就比“好了,现在输入'如果(S == NULL){返回......””好很多。

      4.确实说了不少,最重要的是说到做到,研究更好的办法解决问题、提高效率。包括代码可能没有涉及到重点输入;使显示的变量和子程序更清晰;减少实现代码的繁杂步骤;时刻提醒对方API,当然倾听也是必要的。当两人搭档很默契时,就会反复快速讨论。 以下是一些常见的对话:  “你认为这是一个有效的测试?” “这是否看起来是正确的吗?” “下一步是什么?” “相信我”(和颜悦色的商量如何更方便)。

      5.保持双方步调一致,一起工作难免出现不确定对方进行到哪一程度的情况发生,这是无法避免的。出现上述现象时,积极应对就可以了。最好的办法就是好频率互相协调,短时间确定是否同步,如果花费5分钟或者更久,就和独自工作没什么区别。最好可以做之前明确工作。例如咨询对方,“要我们为空案例编写测试吗”当然偶然也会被动的工作,那么可以解释例如:“需要输入,但不知道是否可行”等,最好能保持这样长时间的探索精神。谁都知道一次性认可比不断解释重来简单,但是为保证工作质量,编码返工其实很正常。不管是谁掌握宏观方向,谁负责细节,最重要是配合默契高效完成工作。       6.花时间庆祝克服困难完成任务。例如,击掌欢呼测试通过,当新测试失败依旧击掌明志时,便是进入协同编程和测试驱动设计的境界。       7.至少每半小时转换角色,全力投入并适应不同级别的工作。此外,由于执行者的工作繁杂,需要警惕转化角色之后无法胜任工作,所以切换角色有助于提升能力。

      我的结对编程的小伙伴是王瑞,她很有幽默感,对于编程,编代码而言,她不会不耐烦,也不会说是很无聊,会在编码中愉快的进行,在编代码中遇到问题的时候,她会很有主见,也不会发生冲突,最重要的是,她特别愿意听从结对人的意见,俩个人会有商有量的进行。

posted @ 2016-03-29 18:54  执笔梦一场  阅读(186)  评论(0编辑  收藏  举报