读书笔记 大规模c++程序设计 Ch2
Ch2 基本规则
主要设计规则要严格遵守,次要的设计规则偶尔偏离一次也可以,指南大多数情况下都要遵守。
成员函数访问
- 主要设计规则:数据成员必须是 private. public 和 protected 数据成员的修改导致 code client 也必须修改。
- 封装 encapsulation 的定义:class 的实现细节(type, data, methods) 无法 class 的 interface 以编程的方式访问或检测,就说 class 封装了这个细节。
全局名字空间 global namespace
- 主要设计规则:避免在文件作用域中包含带有外部连接的数据。
- 不要使用全局变量,它破坏物理结构,而且这样的代码不能被进行 unit test。
用 private static 数据成员代替,并提供 public static get();
- 自由函数(class 外的函数),可能与其他函数冲突.
在 class 内部定义,即可解决。
- enum, typedef, const 应该定义在 class 内部
int const 最好用 class 中的 enum 表示.
其他类型的 const 定义成 class 的 static const, 以限定其范围。
- 预处理 macro 不应该出现在 .h 中,除非作 include guard.
- .h中使用 include guard 保证每个 .h 在同一 translate unit 中只被包含一次.nline
- .h中只放 class, union, inline 的定义
- 文档中要说明无定义的行为。
- 使用文档和 assertion 来进行运行时错误检查。
- 命名规则:
* 数据成员前缀 d_
* static 前缀 s_
* 类型名:首字母大写
* 变量/函数:首字母小写
* enum, const, macro 全部字母大写
* 首字母大写分隔多个单词的
* iterator 使用一致的名称
- 组件 component 物理上由一个 .c 和 .h 文件组成,实现了一个逻辑, 可以有多个 class。