首页 > 代码库 > 《构建之法》第四章
《构建之法》第四章
第四章 两人合作
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)可测性
《构建之法》第四章