欢迎来到天天文库
浏览记录
ID:20707062
大小:54.00 KB
页数:6页
时间:2018-10-15
《浅谈结对编程技术及其应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、浅谈结对编程技术及其应用:结对编程(PairProgramming)是极限编程(ExtremeProgramming)的实践之一,是团队设计的基础。结对编程有利于培养团队合作精神,有利于提高团队效率和代码质量。若把结对编程的方法引入计算机教学实践当中,可以为计算机教学提供一个有效的改进途径,有利于学生编程能力和综合素质的提高。 关键词:结对编程极限编程应用 :TP311.1:A:1007-9416(2011)11-0224-01 1、结对编程技术概述 结对编程技术是指是两位程序员并肩坐在同一台电脑前,共同探讨设计方案、共同设计算法、共同编写程序代码、共同完
2、成各种测试。通常做法是:要求两个开发人员共用一台计算机共同完成程序代码的编写,其中一个人负责具体的细节,而另外一个人关注整体。具体来说就是一个人负责控制键盘,我们通常称为“驾驶员”,另一个人负责其它工作,包括随时观察“驾驶员”的工作情况,发现并告诉其操作性和策略性的失误,我们通常把他称为“导航员”,并且两个人的角色可以随时交换。这样一来代码就汇集了两个人的智慧,代码质量显然有所提高。通过结对编程,两个开发人员在一起可以取长补短,互相学习,共同提高。 2、运用结对编程技术的优势 2.1有利于培养团队合作精神 沟通问题是一个项目开发设计成功与否的最重要因素之一。不仅
3、包括设计人员和客户的沟通,还包括在团队内部。为了达到共同的目标,小组内的成员必需紧密合作,加强沟通,时刻了解对方意图和进展,从而培养了设计员的合作精神。 2.2有利于提高团队的效率 结对编程是两个人同时工作,在和同伴一起工作时,就会保持思想一直高度集中,而由于两个人的思想汇集,也能创造很多新的编程思路和算法,毕竟两个人的智慧要胜过一个人的。两个人经过讨论,形成一致思想,使得在理解错误的风险上减少,所以两人编程就等于同时有了一遍代码复查,出错几率降低了很多。 2.3有利于提高代码的质量 首先,结对编程在纠正了一些同学的编码的坏习惯的同时融合了每个人的编程优点,加
4、强了编码的规范的遵守。另外,结对编程是两个人的脑力劳动,可以共同研究、共同学习,所以常常会去试验新的编码方式,以寻找最好的方法来实现,代码质量明显提高。 3、结对编程技术的应用实践 结对编程的优势很明显,把结对编程的方法引入计算机教学实践当中,尝试解决传统的分组教学中学生两极分化严重的问题,可以为计算机教学提供一个有效的改进途径,有利于学生编程能力和综合素质的提高。 3.1设计结对和分组 首先每两个同学组成结对小组,当人数不是偶数时,可有个别组是三人。这样每个结对组中要么是一个高等能力和一个低等能力的,要么是两个都是中等能力的。三个人的情况要保证至少一人是高等
5、能力。然后再由若干个结对小组组成项目组,以项目组为基本单位,每组完成一个项目。每个项目组的人数要根据任务的复杂程度,一般项目为每组4—6,划分项目组时,仍要根据结对小组的整体能力,高能力组和低能力组进行搭配,中等能力组和中等能力组搭配。另外,要保证每个项目组中至少有一个是有较高组织能力和学习能力的同学担任项目组组长。 3.2合理进行项目分解和任务分配 由指导老师或者是项目组组长对任务进行分解,把一个项目分解成若干个模块,每个结对小组完成一个或几个模块,一个项目组完成一个完整项目。模块划分要尽量做到模块之间低耦合,以减少小组之间的沟通压力。 任务分割完毕之后,就可
6、以开始任务分配。对于不同的人来说,同一个任务的难度是不相同的。因此要调整任务分配,让合适的人做合适的工作,尽量减少整体难度。项目小组成员经过协商讨论,根据各个结对组的技术特点进行合理分工。分工时必须考虑整个项目的复杂度和时间周期,尽量将任务复杂、周期长的任务分配给能力强的结对小组,而将任务简单,周期短的分配给能力较弱的结对小组[3]。 4、需注意的问题 由于每个人有不同的习惯风格,坐在后面的人不习惯写代码人的代码风格这正是XP另一个关键实践的必要性:代码规范。在采用XP方法后,要求所有成员编写的代码都想出自于一个人之手写的,这样才能使代码本身就是设计,方便所有成员
7、沟通维护。通过代码规范之后,也才使XP强调的另一个关键实践“代码共同拥有”成为有效。如在编程中,publicLongaddUser(Stringname,Stringpassethod! //dosomething! } 在方法中,如果neock相关对象,导致测试无法进行先去。在方法参数中传入对象或者接口是很有必要的。上述代码中“//setmethod!”这个地方导致mock不能用,可以修改为 publicLongaddUser(Useruser){ //dosomethings! } 此外,不掌握键盘的那个人应该主动参与到编程当中,他
此文档下载收益归作者所有