- 当 object references(引用)和 pointers(指针)可以做到时就避免直接使用实例对象。仅需一个类型的声明,你就可以定义到这个类型的 references 和 pointers。而定义一个类型的实例对象必须要存在这个类型的定义。
- 只要你能做到,就用对 class declarations(类声明)的依赖替代对 class definitions(类定义)的依赖。注意在你声明一个使用一个 class 的函数时绝对不需要有这个 class definition,即使这个函数通过传值方式传递或返回这个 class:
- 为 declarations(声明)【专门声明是为了快速编译】和 definitions(定义)【为了能够实现功能】分别提供头文件。为了便于坚持上面的指导方针,头文件需要成对出现:一个用于 declarations(声明),另一个用于 definitions(定义)。当然,这些文件必须保持一致。如果一个 declaration(声明)在一个地方被改变了,它必须在两处都被改变。
Things to Remember
- 最小化编译依赖后面的一般想法是用对 declarations(声明)的依赖取代对 definitions(定义)的依赖。基于此想法的两个方法是 Handle classes【声明】 和 Interface classes【虚函数】。
- 库头文件应该以完整并且 declaration-only(只有声明)的形式存在。无论是否包含 templates(模板)都适用于这一点。