《构建之法》学习(4)——两人合作

《构建之法》学习(4)——两人合作

 

1.代码规范

 

      做一个有商业价值的项目,或者在团队里工作,代码规范相当重要。

      代码规范不仅能让同时期编程的合作同伴易理解,而且在后期他人作代码扩充时能节约时间,更好地完成项目。

 

1.1代码风格规范:简明,易读,无二义性

 

      缩进:4个空格

      行宽:100字符

      括号:表示逻辑优先级

      断行与空白的{}行:每个“{”和”}“都独占一行

      分行:不把多条语句放在一行上

      命名:“匈牙利命名法”

      下划线:分隔变量名字中的作用域标注和变量的语义

      大小写:所有的类型/类/函数名都用Pascal形式,所有的变量都有Camel形式

      注释:解释程序做什么,为什么这样做,以及特别要注意的地方

        

1.2代码设计规范

 

      函数:只做一件事,并且要做好

      goto:函数最好有单一的出口,为了达到这个目的,可以使用goto

      错误处理:参数处理

       断言

      如何处理C++中的类:类:避免传递类型实体的值,应该用指针传递。

                对于有显式的构造和析构函数的类,不要建立全局的实体,因为你不知道它们在何时创建和消

                除。

            公共/保护/私有:按照这样的次序来说明类中的成员:public、protected、private。

            数据成员:数据类型的成员用m_name说明。

                 不要使用公共数据成员,要用inline访问啊还念书,这样可以兼顾封装和效率。

            虚函数:仅在很有必要的时候,才使用虚函数。

                                              如果一个类型要实现多态,在基类中的析构函数应该是虚函数。

            析构函数:把所有的清理工作都放在析构函数中。如果有些资源在析构函数之前就释放了,记住要

                 重置这些成员为0或NULL。

            new和delete:如果可能,实现自己的new/delete,这样可以方便地加上自己的跟踪和管理机

                    制。自己 的new/delete可以包装系统提供的new/delete。

                    检查new的返回值。new不一定都成功。

                    释放指针时不用检查NULL。

            运算符:当拿不定主意的时候,不要用运算符,用成员函数。

            异常:使用异常时,需要注意在什么地方清理数据。

                   异常不能跨过DLL或进程的边界来传递信息,所以异常不是万能的。

            类型继承:用const标注只读的参数(参数指向的数据是只读的,而不是参数本身)。

               用const标注不改变数据的函数。

 

2.代码复审

 

      看代码是否在“代码规范”的框架内正确地解决了问题。

 

      目的

      找出代码的错误

      发现逻辑错误

      发现算法错误

      发现潜在的错误和回归性错误

      发现可能需要改进的地方

      教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识

 

  代码复审的步骤

  复审前

  代码必须成功地编译,在所有要求的平台上,同时要编译Debug、Retail版本

  程序员必须测试过代码

  程序员必须提供新的代码,以及文件差异分析工具

  简单来说,就是程序员要先做好一切准备

  复审者有权在任何时候打断叙述,提出自己的意见

  复审时

  要把眼光放远,问一些更深层的问题:这样修改会影响其他功能吗?根本原因是什么?如何避免再次出现?

  复审后

  加入特定标记//$todo, $review, $bug

 

      代码复审的核查表

      概要部分

      设计规范部分

      代码规范部分

      具体代码部分

      效能

      可读性

      可测试性

 

3.结对编程

 

      在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少得多,程序的初始质量会高很多,这样会省下很多以后修改、测试的时间。

      同时,结对的两人可以互相督促,频繁交流,也可以避免代码的责任只属于某一个人,建立集体拥有代码的意识。

 

4.两人合作的不同阶段和技巧

 

      萌芽阶段

      磨合阶段

      规范阶段

      创造阶段

      解体阶段

 

  如何正确地给予反馈

  最外层:行为和后果

  中间层:习惯和动机

  最内层:本质和固有属性

 

posted @ 2017-05-04 22:21  .Yan  阅读(135)  评论(0编辑  收藏  举报