【摘】结对编程

来源:互联网 发布:js 转义双引号 编辑:程序博客网 时间:2024/05/17 01:15
     结对编程早就不是什么新鲜事了,而且运用越来越多,网上讨论这方面的文章也随处可见。在读了《代码大全》后,觉得写得很好,记录了一些文字,拿来分享。我从没实际参与过结对编程,应该说没有发言权,写这些希望起到抛砖引玉的作用。

    1、什么是结对编程
    在进行结对编程的时候,一位程序员敲代码,另外一位注意有没有出现错误,并考虑某些策略性的问题,例如代码的编写是否正确,正在编写的代码是否所需等。结对编程最韧是由极限编程(Extreme Programming)所普及推广的(Beck2000).现在已经使用得相当广泛了(Williams andKessler 2002)。

    2、结对编程的好处
  与单独开发相比,结对能够使人们在压力之下保持更好的状态。结对编程鼓励双方保持代码的高质量,即使在出现了让人不得不飞快地编写代码的压力时仍然如此。

  它能够改善代码质量。代码的可读性和可理解性都倾向于上升至团队中最优秀程序员的水平。

  它能缩短进度时间表。结对往往能够更快地编写代码,代码的错误也更少。这样一来,项目组在项目后期花费在修正缺陷的时间会更少。

  它还具有协同构建的其他常见好处,包括传播公司文化,指导初级程序员,以及培养集体归属感。

    3、几条准则
    用编码规范来支持结对编程:如果两个人整天把时间浪费在争论代码风格的问题上,那么结对编程就不可能发挥它的威力。应该尝试对风格进行标准化,在第5章“构建期间进行设计”里面将其称为“偶然属性”,以便程序员将精力集中到“本质”任务上。

    不要让结对编程变成旁观:不掌握键盘的那个人应该主动参与到编程当中,他应该分析代码,提前思考接下来的代码应该做些什么,对设计进行评估,并对如何测试代码做出计划。

    不要强迫在简单的问题上使用结对编程:一个运用结对编程来解决最复杂问题的小组发现,如果一起在白板上面画15分钟,然后再分别独立编程会更有利(Manzo 
2002)。绝大多数尝试过结对编程的组织最终都是对部分工作采用结对编程.而不是全部(Boehm andTurner2004)。

    有规律地对结对人员和分配的工作任务进行轮换:如同在其他的协同开发实践一样,结对编程的好处在于能够让不同的人熟悉系统的不同部分。有规律地进行轮换有助于知识的互相转播——有些专家建议尽可能经常进行人员轮换,甚至每天进行(Relfer2002)。

    鼓励双方跟上对方的步伐:要是其中一个人相对走得太快的话,那就会大大限制了其结对搭档的作用。速度太快的人需要放慢步伐。否则这对组合应当被拆开,然后和其他人重新组合。

    确认两个人都能够看到显示器:即使是无法看到显示器、使用了太小的字体等细枝末节,都可能造成问题。
不要强迫程序员与自己关系紧张的人组对:有时个人性格之间的冲突会导致组合的效能出问题,强追无法配对的两个人进行组合是毫无意义的,因此请对个性匹配的问题保持警觉。

    避免新手组合:两个人当中至少一个有结对经历时,结对编程的效果最好。

    指定一个组长:即使你的整个队伍希望所有工作都通过结对编程的方法来做,你还是需要指定一个人来协调工作的分配,对结果负责以及负责与项目外其他人的联系。

    下面几个特点是从网上摘下来的
    一、结对编程可以最大化的提高工作效率。 软件开发并不只是程序员堆砌代码的过程,它更多的是一个创新的过程,是一个发现问题、分析问题、解决问题的过程。一个人编程时,往往有了一丝零碎的想法就开始编写代码。写完代码之后,忽然发现这个方案行不通,只好废弃这些代码,重新开始新的想法。当一个人在遇到疑难问题时,很容易走入“死角”。而结对编程则不同,一个人有了想法,首先要表达出来,让自己的同伴理解,经过深刻的讨论,一致认可之后才开始编写代码。一个人编写代码,另一个则在旁边思考,会为下一步的工作提出建设性的意见。发现了问题可以及时的指正。大大的提高了代码质量。

    一个人一天有效工作时间不超过3-4个小时。两个人一起结对编程。一个人编写代码,另一个人则从设计的角度思考下一步的工作,有了想法之后,互相讨论,再互换角色。在开发过程中,设计思考和编码实现不停的进行交换,保持了良好的开发节奏。同时可以互相督促,使彼此更加认真的工作。遇到问题和压力时,可以一起面对,互相鼓励。可以一起分享解决问题的成就和乐趣。

    二、结对编程是知识传播的最好途径。 很多软件公司都建立有自己的知识库,有的还建立自己的培训部门,甚至高薪聘请一些专家做技术培训。但发现效果并不理想。培训之后,开发人员面临实际的项目,还是一片茫然。而与有经验的同事一起结对编程则是在实际项目中学习,具有非常强的针对性。你学到的不仅是一些技术和技巧,更多是他们思考问题方式、解决问题的方法。和各种不同经验的同事一起结对编程,你的经验和能力可以得到快速的提高。

    三、结对编程可以打造出最佳的合作团队。 团队是有组织有计划的,合理有效地利用各种资源,进行最佳的组合。结对编程并不是一对固定的伙伴,我们鼓励在团队中经常交换结对编程伙伴。这时我们发现,项目不再是一个人的事情,也不是两个人的事情,而是整个团队的事情。
原创粉丝点击