结对编程

✍ dations ◷ 2025-11-16 01:26:24 #结对编程

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

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

结对编程是极限编程的组成部分。

一些研究发现程序员结对工作与单独工作相比,会写出更短的程序,更好的设计,以及更少的缺陷。 研究发现缺陷率降低15%到50%,会由于程序员的经验以及任务的复杂度而不同。 结对编程比单独编程相比,通常会考虑更多的设计选项,达成更简单,更易维护的设计;程序员们也会更早地捕捉到设计的缺陷。 结对编程与一个程序员承担同一个任务相比工作会完成的更快。结对的程序员经常发现当他们一同工作时表面上“不可能”的问题变得容易,或更加快速,或至少有可能解决。

然而,一个2007年的元分析得出结论“结对编程并非一致地有利或有效的”,这是因为是否结对编程选择以外的许多因素在编程任务的产出上起着很大的作用。 元研究发现结对编程往往一定程度地缩短了开发时间,而且对代码质量产生了正的边际效益,但是结对编程大大增加了开发人员的工时;也就是说与单独编程相比花费大大增加了。作者指出有关结对编程的研究遭遇了发表偏倚,有些不利于结对编程的研究要么没有开展研究,要么没有投稿,要么没有被授受发表。他们得出结论“你不可能期待又快又好又便宜。”

虽然编码通常比一个程序员单独工作更快地完成,但是整体程序编写时间(程序员数目 × 花费的时间)增加了。管理者需要在工作更快的完成以及缩减测试和调试时间和更高的编码成本之间平衡。这些因素的相对权重在不同的项目、不同的任务之间也不同。对于那些程序员没有完全理解的任务上,程序员期待更多的创造性,挑战,以及 高复杂度,此时使用结对编程最有帮助。 在简单的,程序员都完全了解的任务上,结对编程导致生产力的净下降。

在两个程序员工作时,两个程序员之间传递着知识。他们分享关于系统细节的知识,并且互相学习编程技巧。 新的员工很快地获得团队的习惯,并学习到系统的细节。 “混杂结对编程”,即每个程序员轮流与团队中的所有其他程序员结对编程,而不是仅与某个程序员编程,使得系统的知识在整个团队中传播,减少了程序员离开团队带来的风险。

结对编程通常会带来纪律和时间管理的提升。程序员在与结对的伙伴一同工作时,不太会忘记编写单元测试,花时间上网或处理个人电子邮件, 或偷工减料。结对的伙伴“让他们保持诚信”。 人们更不愿意打断两个结对编程的人,而单独工作的人却容易被打断。

其他的收益据报告包括提高士气以及在代码正确性上更大的信心。

在学术圈里,结对编程也是争议的。其原因是过往学术期刊所发表的结对编程实验,基本上其他学者很难让重复实验核对。所以很多结对编程实验只有原作者才真正了解结果。可是,2013年Giri 和Soni 重复了在2006年Kim Man Lui所报告的结对编程实验 而实验结果也是一致。此次重复实验标记着结对编程研究的里程碑

远程结对编程,也称作虚拟结对编程或分布式结对编程,是指两个程序员不在同一地点,通过协同编辑器,共享桌面,或远程结对编程的IDE插件进行的结对编程,。远程结编程引入了一些在面对面的结对编程中不存在的困难,例如协作的额外时延,更多的依赖“重量级”的任务跟踪工具,而不是“轻量级”的索引卡片,以及没有口头交流导致的在类似谁“控制键盘”问题上的混乱和冲突

许多任务具,例如Eclipse有插件支持远程结对。有些团队尝试使用VNC和RealVNC,每个程序员使用他们自己的计算机。 其他人使用基于文本的GNU Screen的多显示模式。苹果公司的Mac OS X包含内建的屏幕共享应用。

在乒乓结对编程中,观察者编写失败的测试用例,驾驶者修改代码以通过该用例,观察者编写新的单元测试用例,等等。这个循环持续到观察者能不写出失败的测试用例为止。但是这种方法比估计的计划要花更多的时间。

相关

  • 威斯康星大学麦迪逊分校威斯康星大学麦迪逊分校(英语:University of Wisconsin–Madison,简称UW-Madison、Wisconsin、威大),位于美国威斯康星州首府麦迪逊,是威斯康星大学系统的旗舰分校。它是一所公立
  • 莱昂哈特·福克斯莱昂哈特·福克斯(英语:Leonhart Fuchs),(1501年-1566年),文艺复兴时期欧洲的医生、植物学家。他为蒂宾根大学医学系的教授。于1542年出版了一本有影响的关于药用植物学的论著,书中有
  • 李麟佐之乱李麟佐之乱,又名戊申乱(무신란)、岭南乱(영남란),是朝鲜王朝时期的一场反对朝鲜英祖的叛乱。这次叛乱发生在1728年(英祖4年),持续了17天,最终以失败告终。辛壬士祸后,少论派分裂为缓和
  • 基数基数或量数可以指:底数:基数亦称为底数(通常简称为“底”)
  • 李笑非李笑非(1925年9月-2020年8月3日),原名李然松,四川成都人,中国川剧演员、导演。1925年9月(另有1926年、1927年出生的说法)出生。9岁学戏,早年拜师名净万斌武,后参师名生陈淡然。1945年
  • 程虞卿程虞卿(1762年-1820年),字赵人,号禹山。安徽天长人。清朝诗人。程煐的堂弟。十六能诗,好李贺诗。嘉庆四年(1799年)秋,程虞卿随座师铁保到盛京,程焕将《龙沙剑传奇》抄录寄示程虞卿。嘉
  • 李·阿尔文·杜布里奇李·阿尔文·杜布里奇(英语:Lee Alvin DuBridge,1901年9月21日-1994年1月23日),美国物理学家和教育家,1946年至1969年担任加州理工学院的主席。
  • 若望-伯多禄·里卡尔若望-伯多禄·里卡尔(法语:Jean-Pierre Ricard;1944年9月25日-)是法国籍天主教司铎级枢机及波尔多总教区荣休总主教。里卡尔于1944年9月26日在法国第二大城市和第三大都会区马赛
  • 米莉安·塞拉米莉安·塞拉(英语:Miriam Sylla,1995年1月8日-),意大利女子排球运动员,司职主攻。现时效力于意超豪门科内利亚诺女排俱乐部。她是意大利国家女子排球队队员。她代表意大利出战2018年世界女子排球锦标赛夺得银牌并个人获得最佳主攻。2019年,代表科内利亚诺女排俱乐部夺得2019年世界女排俱乐部锦标赛冠军。2021年,再次代表科内利亚诺女排俱乐部夺得2021年欧洲女子排球冠军联赛冠军。
  • 大卫·布隆德尔大卫·布隆德尔(法语:David Blondel,1591年-1655年4月6日)法国新教神职人员、历史学家和古典学者,生于香槟沙隆,阿姆斯特丹大学历史学教授,证明女教宗琼安的传说为虚构,《伪伊西多尔教令集》为加洛林帝国时期伪造而成。