首页 > 代码库 > 《构建之法》第四章

《构建之法》第四章

第四章 两人合作


 

4.1代码规范

    (1)代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。

    (2)代码设计规范。牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。

 

4.2代码风格规范

     (1)缩进4个空格

     (2)限定100字符行宽

     (3)在复杂的条件表达式中,用括号表示逻辑优先级

     (4)每个“{”和“}”都独占一行

     (5)不把多个变量定义在一行

     (6)命名

     (7)下划线用来分割变量名字中的作用域标注和变量的语义

     (8)用大小写区分由多个单词组成的变量名

     (9)注释

 

4.3代码设计规范

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

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

3、错误处理:(1)参数处理(2)断言

4、类:

   (1)使用类来封装面向对象的概念和多态。

   (2)避免传递类型实体的值,用该用指针传递。换句话说,对于简单的数据类型,没有必要用类来实现。

   (3)对于有显式的构造和析构函数的类,你要建立全面的实体,因为你不知道他们在何时创建和消除。

   (4)仅在必要时,才使用“类”。

5、class vs.struct:如果只是数据的封装,用struct即可。

6、按照这样的次序来说明类中的成员:public、protected、private。

7、数据成员:

    (1)数据类型的成员用m_name说明。

    (2)不要使用公共的数据成员,要用inline访问函数,这样可兼顾封装和效率。

8、虚函数:

    (1)使用虚函数来实现多态。

    (2)仅在很有必要时,才使用虚函数。

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

9、构造函数

    (1)不要在构造函数中做复杂的操作,简单初始化所有数据成员即可。

    (2)构造函数不应该返回错误。

10、析构函数    

    (1)把所有的清理工作都放在析构函数中。

    (2)析构函数也不应该出错。

 11、new和delete

    (1)自己的new和delete可以包装系统提供的new和delete

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

    (3)释放指针时不用检查NULL

12、运算符

     (1)在理想状态下,我们定义的类不需要自定义操作符

     (2)运算符不需要做标准语义之外的任何动作

     (3)运算符的实现必须非常有效率,如果有复杂的操作,应定义一个单独的函数

13、异常

     (1)不要用异常作为逻辑控制来处理程序的主要流程

     (2)了解异常及处理异常的花销

     (3)当使用异常时,要注意在什么地方清理数据

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

14、类型继承

     (1)仅在必要时,才使用类型继承

     (2)用const标注只读的参数

     (3)用const标注不改变数据的函数

 

4.4代码复审

1、目的:

    (1)找出代码错误

    (2)发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的

    (3)发现算法错误

    (4)发现潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现

    (5)发现可能需要改进的地方

    (6)教育开发人员,传授经验

2、核查表:

    (1)概要

    (2)设计规范

    (3)代码规范

    (4)具体代码

    (5)效能

    (6)可读性

    (7)可测性

《构建之法》第四章