头文件:
1. 避免多重包含是学编程时最基本的要求;
2. 前置声明是为了降低编译依赖,防止修改一个头文件引发多米诺效应;
3. 内联函数的合理使用可提高代码执行效率;
4. -inl.h 可提高代码可诺性(一般用丌到吧:D),内联代码放到这个里面;
5. 标准化函数参数顺序可以提高可读性和易维护性(对函数参数的堆栈空间有轻微影响,我以前大多是相同类型放在一起);
6. 包含文件的名称使用.和..虽然方便却易混乱,使用比教完整的项目路径看上去很清晰、很条理,包含文件的次序除了美观乊外,最重要的是可以减少隐藏依赖,使每个头文件在“最需要编译”(对应源文件处:D)的地方编译,有人提出库文件放在最后,这样出错先是项目内的文件,头文件都放在对应源文件的最前面,返一点足以保证内部错误的及时发现了。
作用域:
1. .cc 中的不具名命名空间可避免命名冲突、限定作用域,避免直接使用 using 提示符污染命名空间;
2. 嵌套类符合局部使用原则,只是不能在其他头文件中前置声明,尽量不要 public;
3. 尽量不用全局函数和全局发量,考虑作用域和命名空间限制,尽量单独形成编译单元;
4. 多线程中的全局发量(含静态成员变量)不要使用 class 类型(含 STL 容器),避免不明确行为导致的bugs。
作用域的使用,除了考虑名称污染、可读性之外,主要是为降低耦合度,提高编译、执行效率。
C++类:
1. 不在构造函数中做太多逻辑相关的初始化;
2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器不再提供,需要编码者自行提供默认构造函数;
3. 为避免隐式转换,需将单参数构造函数声明为 explicit;
4. 为避免拷贝构造函数、赋值操作的滥用和编译器自动生成,可目前声明其为 private 且无需实现;
5.