对于结对编程的理解

结对编程是极限编程(XP)的十二个实践之一,是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法以及同一段代码,并且两人的角色可以随时互换。XP认为结对编程能提高软件开发效率,很多国外软件企业都在热衷于结对编程,Facebook程序员肯特•贝克(Kent Beck)表示:“结对程序员之间的交流非常充分,你甚至可以再也不用言语进行交流。你只要简单描述再结合着手势就可以。”Grockit首席执行官罗伊•吉尔伯特(Roy Gilbert)表示,这种模式已经证明非常成功,他的程序员“正在继续推广这种做法。”而IBM还为结对编程推出了协同开发工具ECF。

在当今的软件工程概念中,代码走查是一个很重要的过程。代码走查的目的是提高软件的质量,以及可维护性,经过走查的代码是能够更容易地被项目组其他成员看懂的。然后代码走查的成本不低,有经验的软件工程师都清楚,要一个开发人员完全理解另一个人的代码是一件不容易的事情,不只是代码编程习惯的不同会导致阅读代码的困难,在复杂的业务逻辑下,不同的开发人员的设计思路也有很大不同的,导致不同的人对代码的理解有很大差异。所有很多时候代码走查紧紧只是看看代码中是否有语法上的错误,是否符合编程规范,而要发现业务逻辑上的深层错误是很困难的,以至很多浮躁的软件开发公司甚至直接省略代码走查这个步骤。

结对编程则正是提高代码走查效率和质量的非常有效的手段。两个开发人员坐在一起,共同思考和讨论设计思路,轮流编写程序代码,轮流走查另一个人在写的代码,代码走查和编码并行开展,而不是等完全编码之后才做代码走查,产生的程序代码风格是两个人都能接受的。这样就不存在要一个人去理解另一个的代码的问题,实际是两个人共同理解代码。而且由于两个人的思想盲区要远小于一个人的思想盲区,所以能够在编码过程中及时地发现程序在业务逻辑实现上的深层问题,大大提高代码走查的效率和质量。对于包含代码走查阶段的软件开发过程而言,结对编程是能大大提升软件开发效率的。

结对编程还有很多优点,比如提高软件代码的质量,促进知识传递,降低新员工学习成本等。除此之外,作者还发现结对编程还有一个很大的优点,就是能让敏捷开发所倡导的共同责任理念落到实处。

敏捷开发强调项目是整个项目团队共同拥有的,所以项目的问题是项目团队所有成员的责任,而不只是某个人的责任,项目团队的所有成员应该共同努力来解决和避免所有的项目问题。结对编程则能很好地体现这个理念,在结对编程中两个人频繁变换角色,对于程序代码存在错误,就很难分清是谁的责任,甚至很难分清楚哪里的代码是谁写的,所以代码问题至少是结对的两个人的共同责任,从根本上促进了共同责任的理念。

这次老师又给我们提出了一个新的项目——结对编程。经老师的解释,我的理解就是:结对编程就是两个人使用一台笔记本进行编程,其中一人负责坐在电脑面前敲代码,另外一人在其旁边提供思路或者检查是否有逻辑错误或者语法错误。

  这次结对编程的是李志芳。老师给我们的结对题目是: 1. 用户可以输入待抽签的号码集合 2. 可选择是否允许重复抽签 3. 用户可以选择生成分组,如:35人,每组4-5人,可以生成随机分组 4. 显示号码滚动效果 5. 界面易操作,设计美观、友好
  由于一个人思想的局限性,有很多的地方考虑不到又或是考虑的过多进入了死胡同。最后通过和结对的队友一起讨论,通过团队合作,将大家的想法总结到一起,才设计出更加完善的程序。

  

时间: 2024-10-22 21:38:52

对于结对编程的理解的相关文章

关于结对编程的理解

结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果.但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候.实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来.而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少. 两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案.而

结对编程第一阶段

1)查阅相关资料加深对敏捷开发和结对编程的理解: 敏捷开发:以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态.敏捷开发五大优点:1. 精确要求,精准成果.2. 质量有保障.3. 客户合作胜过合同谈判.4. 投资回报率高.5. 较高的速度是敏捷开发最显著. 结对

结对编程 第一阶段

1)查阅相关资料加深对敏捷开发和结对编程的理解: 敏捷开发:敏捷开发采用增量和迭代的开发过程,强调团队紧密发协作,能够有效应对快速变化需求,快速交付高质量的软件,是一种新型软件开发方法,相对于理论,更基于实践.敏捷开发更注重适应而非预测,因为需求是不可预测的,所以软件开发应该是一个自适应的跟踪过程,在敏捷开发的过程中,把整个开发过程划分为若干个更小的迭代,每一个迭代周期称为一个冲刺,是一个小的瀑布模型,包括需求分析.设计.实现和测试等活动,结束时都要生成一个稳定和被验证过的软件版本.比于传统的由

实验二:结对编程 第一阶段

一.实验目标: 1)体验敏捷开发中的两人合作. 2)进一步提高个人编程技巧与实践. 二 .实验内容: 1)根据以下问题描述,练习结对编程(pair programming)实践: 2)要求学生两人一组,自由组合.每组使用一台计算机,二人共同编码,完成实验要求. 3)要求在结对编程工作期间,两人的角色至少切换 4 次: 4)编程语言不限,版本不限.建议使用 Python 或 JAVA 进行编程. 三.问题描述 四则运算:开发一个自动生成小学四则运算题目的命令行 “软件”.实现 输入你要出题的个数,

实验二 结对编程(阶段一)

实验记录—第一阶段 自我学习Github的相关知识的记录: https:////www.cnblogs.com/Incoming22/p/12419553.html 一.查阅资料    ?? 查阅相关资料加深对敏捷开发的和结对编程的理解: 1.敏捷开发 (1)概念: 敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把一个大项目分为多个相互联系,但也

实验二 结对编程 第一阶段

一.实验目标: 1)体验敏捷开发中的两人合作. 2)进一步提高个人编程技巧与实践. 二 .实验内容 1)根据以下问题描述,练习结对编程(pair programming)实践: 2)要求学生两人一组,自由组合.每组使用一台计算机,二人共同编码,完成实验要求. 3)要求在结对编程工作期间,两人的角色至少切换 4 次: 4)编程语言不限,版本不限.建议使用 Python 或 JAVA 进行编程. 三.实验过程 1)查阅相关资料加深对敏捷开发和结对编程的理解: 敏捷开发:敏捷开发是一种从1990年代开

对结对编程的个人理解:

结对编程看似很简单,无非是两人一起开发软件,但其实并没有这么简单. 首先:每个人的思维都不是相同的,对所作程序的理解也各不相同,意见分歧是最大的阻力. 其次:对于程序的工作进度,不得不重视这个问题,因为若是两人分工完成,那必须双方进度契 合,这也是难点. 但总的来说也有非常大的利处,三人行必有我师,一个人的注意比不上大家的点子,两人同样如此, 若是两人水平相当,那就更不用说了,它可以促进参与项目的程序员自身的提高,一对程序员工作 的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些

对二分法的理解以及结对编程情况

一. 二分法思想 1. 要求 二分法要求线性表必须采用顺序存储结构,表中元素要按关键字有序排列. 2. 时间复杂度及分析体会 最好情况:1次 最坏情况:O(log n) 这种算法是一种典型的分治的策略,并且这种算法很利于理解,它利用了元素之间的次序关系.相对顺序查找这种方法的效率较高,它能在大多数的情况,例如数据量很大,并且有序的时候,实现更快的数据查找功能,也是比较常用且易于想到的一种算法实现. 3. 代码 #include <iostream>using namespace std;int

对二分法思想的理解 及 结对编程情况汇报

一.对二分法思想的理解 1.特点:又称为折半算法,是分治策略的一个典型例子.主要是用于:在已排好序的n个元素组成的数组a[0:n-1]中,找出一个特定的元素x. 2.基本思想:(1)将n个元素分成个数大致相同相同的两半,然后取a[n/2]与x作比较. (2)如果x = a[n/2],则已找到x,返回下标并结束算法: 如果x < a[n/2],则只在数组a的左半部继续搜索x: 如果x < a[n/2],则只在数组a的右半部继续搜索x: 3.时间复杂度:在二分搜索算法中,x每进行比较,待搜索的数据