转眼已是十一周,距离期末已很近了。加上有任务在手,渐渐地可能会忙起来,因而决定加快读书进度以期尽早完成基本内容的学习,在这样的环境下本周阅读了书中的第4、5章。
有句俗话说得好,众人拾柴火焰高。无论从事什么活动或者工作,多数情况下合作得到的结果都是1+1>2的。第4、5章就分别从两人的结对编程和大型的团队项目着眼介绍了软件的开发经历。软件开发的过程是复杂的,一个人单独开发一个软件的情形已经非常少见了。绝大多数的软件都是在相互合作中完成的,合作很大程度上实现了个体的优势互补,譬如有人擅长界面设计,有人擅长功能实现,这样的合作能减少工作量,问题一起解决、工作一起分担能使开发工作的效率大大提高。
合作是如此的重要,而个体间水平、习惯的差异又是必然存在且无法避免的,对从事同一活动的个体程序员进行相关的规范约束就非常有必要。作为编程人员,代码及编程的规范又是重中之重。要是一个团队高效的运作,代码的风格规范和设计规范必不可少。规范中最主要的原则是:简明,易读,无二义性。整体的风格上要便于阅读,如行宽、缩进、分行和括号使用等都可以纳入规范。此外要尽可能的使各个变量、函数从名字上就比较便于阅读,必要的解释说明也要加以注释。设计上则要尽量精简,现代程序设计中的绝大部分功能都在程序的函数中实现,函数设计实现的最重要的原则就是:只做一件事,并且要做好。并且函数最好有单一的出口,要注意程序逻辑的清晰体现。在实际操作中还要注意错误处理,使用面向对象语言时还要留意类的使用和设计。
除具体实现外最重要的部分当属代码复审,具体又可分为:自我复审、、同伴复审、团队复审。复审的目的在于找出代码中的编码、或不符合团队规范等方面的错误以及发现代码逻辑上和算法设计上的错误和可能需要优化的部分,发现潜在的错误或回归性错误以及可能需要改进的地方也是重要目的。此外,复审还起到传播知识、使程序设计开发人员互相教育的作用。书中则以不少具体的实操情形介绍了几种复审的规范和步骤。复审的一种特殊的极致情形就是结对编程,一对程序员共同、平等、互补地进行开发工作,进行着频繁的交流与检查,实质是就是不间断的复审与修改,这样一来程序中的错误就会少得多,初始的质量自然也就有了提高,从而省下很多过后修改、测试的时间。两人合作解决问题的能力更强,只要运用得当,结对编程能提供更好的设计质量和代码质量,也就取得了更高的投入产出比。书中则以交谊舞为例子简单介绍了合作发展的各个阶段,同时阐明了合作中非常重要的一个概念——如何影响对方。互相之间的反馈在合作中非常重要,而如何进行反馈以及具体的措辞则是一门学问。
有了两人合作的基础,第5章详细介绍了团队合作的概念。什么是团队?团队有一致的集体目标,队内成员有各自的分工、相互依赖的合作、共同完成的任务,一个团队的成员不一定要同时工作,但对彼此或多或少的会产生一些影响。书中介绍了一些团队组建的模式:一窝蜂模式、主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模爵士乐模式、功能团队模式、官僚模式等等。也介绍了一些比较常见的开发流程,如写了再改模式、瀑布模型及其各类变形、Rational统一流程、渐进交付的流程等,同时引出了优秀的模式和流程的一些共有点(TSP原则)。