首页 > 代码库 > 《构建之法》--两人合作
《构建之法》--两人合作
本周学习的是《构建之法》的第四章,这章的主题是两人合作,看到这个题目我的第一反应是现在两人合作的项目还很多吗?因为我一直认为一个项目一般是几个人或是十几个人这样的团队来合作完成的,这个思想也不知道是看到了什么有的。值得一提的是,书中的第五章就是讲团队合作的。
合作的最小单位是两个人,合作过程中必然存在着个人看法,比如一个人看另一个人的代码时就不一定同意其看法了,每个人心中对于好代码的定义也不尽相同,这时候就很有必要给出一个基准线--什么是好的代码规范和设计规范。
看到课本上代码清单4-1,的确第一反应就是不想看!代码的表面其实和人的外表一样的,当然,这里并不是指人的外貌的好看与否,而是干净明落与否。看到这样杂乱无章的代码就跟看到一个邋遢的人是差不多的,看一眼都觉得碍眼的人又怎么会有继续了解的想法的,同理,看到这样多看一眼都觉得浪费时间的代码也不会有继续看下去的想法,这样,无论你的代码有多好,多符合客户的要求,也会在第一眼的时候就被否定掉一大半了。同样的,这样的例子在我们生活中其实都可以看得到的,比如面试的时候,看简历的时候都是很注重第一印象的,第一印象不好的人首先就会被否定掉一大半。好了,言归正传,继续学习吧。
代码规范分为代码风格规范和代码设计规范。
先说说代码风格规范吧。书中的观点是简明,易读,无二义性。书中从缩进,行宽,括号,断行与空白的{}行,分行,命名,下划线,大小写,注释这几个方面着手介绍代码风格规范。其实不少在我们学习的过程中都是遇到的,就看自己有没有注意这些规范的运用罢了。在断行中作者一开始举的例子是为了层层递进最好的,其实我也就认同最后那种,毕竟那种也是比较直观好看吧。对于命名的说法,其实我也是比较苦恼的,因为自身英文不是很好,所以想用英文来命名还得百度,中文的自然不好,所以就显得比较麻烦了,唉,看来以后还是要好好学英语的,何况现在还有专业英语呢,
接下来说说代码设计规范吧。代码设计规范比代码风格规范的理解层面要高一些的。代码设计规范不仅是程序书写的格式文体,而且牵涉到程序设计,模块之间的关系,设计模式等方方面面。函数是我们写程序基本都会用到的,书中的观点就是:只做一件事,并且要做好。Goto是为了使函数有单一的出口。错误处理我觉得是每个写程序的人都会遇到的,不存在没有出现错误的代码。错误处理看似需要很少的时间来解决,最后其实往往需要全部项目80%的时间。断言是用来验证代码的正确性。然后书中关于类的讨论,大部分在学习C++或是JAVA的时候都有学习过了。我比较生疏或者说接触不多的是new和delete。如果可能,实现自己的new和delete,这样可以方便的加上自己跟踪和管理机制。自己的new和delete可以包装系统提供的new和delete;检查new的返回值,new不一定都成功;释放指针时不用检查NULL。然后对于异常处理,我的运用还是不够的还需要多加学习,当试用异常时,要注意在什么地方清理数据,异常不是万能的。
代码复审。代码复审并不是把自己写好的代码给别人看就行了。代码复审的正确定义:看代码是否在“代码规范”的框架内正确解决了问题。代码复审的形式包括自我复审,同伴复审,团队复审。其中最基本的复审手段,就是同伴复审。代码复审简单点来说就是找出编译器检查不出来的bug,比如逻辑上的,算法上的等等。还有一点就是互相教育开发人员,传授经验。代码复审的最终目的是为了让代码能够更好地实现,更好地满足客户的需求,复审并不是为了针对开发者来找bug的。关于代码复审的核查表内容我并不想多说,在以后编程的时候多注意就好。
结对编程。慢慢看着,我的想法是如果说结对编程后,程序各方面的质量取决于一对程序员中各方面水平较高的那一位,那么,为什么不再多点人呢?这样不是质量会更高吗?很快,接下来,书中就指出了团队复审的缺点,的确,太多人了也不好管理,团队交流必然没有两个人交流方便,而且也有些浪费。书中还讲了不少关于结对编程的一些关键点,在以后的编程中,这是很值得借鉴的,当然,前提是两个人都不过于在意技术水平,工作方式之类的变得透明,我觉得真正有实力的人是不会在意这种事的,因为这样也在一定程度上帮助成长。既然是合作,那么往往就会经历过一个个阶段最终才会掌握到两人合作的精髓。书中把两人合作分为萌芽阶段,磨合阶段,规范阶段,创造阶段,解体阶段。现实中并不一定都会经历这几个阶段,看实际情况吧。还有就是如何正确地给予反馈,这个是很重要的,同时还讲究一定的说话技术。评论人有三种层次。最外层:行为和后果。中间层:习惯和动机。最内层:本质和固有属性。评论要看你针对那个层次反馈。评论别人的代码的时候也是要注意自己侧重那个层次的,这样才能达到最好的效果,被评论人才能更好地找出自己需要改正的地方并解决。
为什么要讲这么多关于两人合作的反馈问题呢?真如书中所说,如果两个人之间的合作都处理不好,又如何谈团队合作呢。下一章就是团队合作的了,下次让我们看看两人合作和团队合作究竟有什么关联吧。
本次的学习就到这里,两人合作的学习内容还有不少是需要学习的,希望自己以后在编程的过程中做项目的过程中能体会到书中所说的两人合作的要点,想想还是比较期待这种两人合作的结对编程方式的体验的。
《构建之法》--两人合作