zoukankan      html  css  js  c++  java
  • 在复杂的项目开发中使用结对编程

    在复杂的项目开发中使用结对编程

                                                                                                                                                卢占辉译

           在开发软件项目时,不仅写出相应功能的模块很重要;确保写出的模块的易维护性(bug 修复,代码重构)也同样重要。

           主打互联网技术和门户网站的Perpetuum 手机公司曾开展了一个长期的软件项目,以研制出一套基于web的内容管理软件。Perpetuum公司的许多开发者都参与了这个项目。项目中大部分复杂的模块都是完全靠个人开发的(非多人协作完成)。维护这些模块(即非多人协作完成的模块)非常困难。因为开发某一模块的人还需要开发新的模块或者维护另一既有模块,这需要花费更多的时间。为了避免这种情况发生,他们决定在开发复杂模块时试验性地使用结对编程。

           结对编程是数种极限编程技术中的一种。这项技术要求两个开发者在一台计算机上共同工作。其中一人写代码,另一人坐在一旁检查搭档的工作。前者称为驱动者,后者称为观察者。观察者在旁观察驱动者工作,并不断审查代码,发现代码中出现的错误。一段时间后,观察者和驱动者交换角色。即工作一段时间后让原来的观察者写代码,执行驱动者的任务,而原来的驱动者则执行观察者的任务。应当注意,观察者不应只坐在一旁看驱动者写代码,而应该通过思考,通过与驱动者交流不同意见积极地参与到创作代码的过程中去。

           结对编程可以使公司避免只有少数人熟悉某些模块代码的情况。这就是Perpetuum公司决定试验性地使用结对编程的主要原因。如果一个任务是由两个人共同完成的,那么当其中一人离职后,团队也能更容易弥补由此而引发的不良后果。这种好处在稍大点的,一段时间后就需要重新结对的团队中表现得更加明显。结对的方式也使得在团队中分享特定项目知识成为可能。除了可以分享与项目相关的知识外,开发者也会很自然而然地分享一些空闲时间学习到的技术知识。这是因为结对的人紧密地相互配合,所以自然就会交流更多独自开发时的学到的经验。

           与所有极限编程技术一样,结对编程也引起了许多非议。一些人认为以结对的方式工作会导致时间上的浪费。尤其是在一些不要求代码质量更高,要求尽可能快地实现所需功能的情况下。没有研究或实验证明结对编程更加有效。他们认为结对编程要比单独编程多耗费两倍的时间。

           如果我们单单从代码书写的角度看,这个结论也未为不可。但是如果我们把分析、设计,代码书写时耗费的时间都考虑进去与之做个比较的话,采用结对编程只需耗费原先40%到50%的时间就可完成开发任务。这是因为群体的IQ水平要比所有独立个体的IQ水平总和要高些。结对工作的开发者可以把他们的经验与创造性结合起来。因此通常结对团体设计解决方案的能力要比单个开发者的高得多。

           信心和乐趣是从事诸如编程这类富有创新性的工作的良好动力。试过结对编程的人表明结对工作时对自己设计的解决方案更有信心;而且也更加享受开发的过程。

           不断的代码复查保证了代码的质量。虽然使用了结对编程,但并不是说bug不会出现。bug依旧会有,但是却能更早地被发现和修复。

    注意:要依次满足以下条件才适合使用结对编程:

           1、结对成员接受结对编程的概念。

           2、愿意互相合作且彼此之间沟通良好。

           3、结对双方技术知识水平相当。这是因为如果水平相差太远,他们的关系就成了“师徒”而非“搭档”。不利于团队的“多产性”。

                                                                                              

                                                                                                                             2016.9.15

    (欢迎交流:Email:844804539@qq.com )

    原文地址:

    http://www.thefreelibrary.com/Case+study%3a+using+pair+programming+in+development+of+a+complex+module.-a0246014267

     

  • 相关阅读:
    recon-ng打开后显示No modules enabled/installed
    mysql的floor()报错注入方法详细分析
    视频合并时使用python批量修改文件名
    ThinkPHP5框架引入的css等外部资源文件没有生效
    用session实现的用户登陆,客户端是怎样获取到cookie信息的
    关于Linux系统下基于Tomcat部署和升级war包的详细过程
    nginx代理的页面性能优化大全
    linux下MySQL数据库的定时备份与定时删除
    关于linux查询内存,CPU,存储空间和日志查询的的常用命令及参数讲解
    linux 查看cpu核心数
  • 原文地址:https://www.cnblogs.com/wuyiblogs/p/5874626.html
Copyright © 2011-2022 走看看