c++编程惯用法
----高级程序员常用方法和技巧
第1章 抽象
- 设计抽象模型和设计实现细节应该是两个相互独立且相关的行为。
- 没有出现在抽象模型中的东西和出现在其中的东西一样重要
- 如果存在疑问,先不要考虑它。添加新的功能通常都不会有兼容性的问题,但是去除一个已有的功能则可能导致代码失效。
- 彻底的检测和记录下设计中的关键点。
- 设计是一个迭代的过程。
- 请考虑边界条件。
- 在设计初始阶段使用CRC卡片。
- 判断缺省的复制构造函数和赋值操作符的行为是否符合我们的期望,必要时重新实现它们。
- 避免使用赋值操作来初始化成员,使用构造函数初始化语法来完成初始化操作。
- 当编写赋值操作符时,请检测s = s 这种情况。
- 避免出现公用数据。
- 尽可能少的声明和使用隐式类型转换。避免在同一个类中出现两个(或者多个)转换操作符。
- 一元操作符,赋值操作符,(), [] ,以及 -> 应该被定义为成员函数,其它操作符应该被定义为非成员函数。
- 使用缺省值来为同一个函数提供不同的调用方式,使用函数重载来为同一个抽象操作提供多种实现。
- 除非被调用函数需要它自己的对象拷贝,否则请使用传递常量引用的方式来调用函数。