一) 尽量不要让头文件包含其他过多的头文件,如果被包含的头文件要重新编译的话自己也要被编译,所以尽量使用前置申明
class Obj;
一下几种情况应该使用前置申明而不是包含头文件
1.数据成员为指针或者引用
2.静态数据成员,由于静态数据成员的定义在类的定义只外
3.但一个类继承另一个类时必须使用父类的头文件
(二) 内联函数的使用时机
当内联函数的代码在10之内时就使用内联,内联函数不应该包含循环或switch语句
虚函数和递归函数不能申明为内联
(三) 禁止使用class类型的全局变量
(四) 局部变量的初始化要放在离使用最近的位置
提倡使用申明+赋值
int i;
i = f(); // 坏——初始化和声明分离
int j = g(); // 好——初始化时声明
(五) 类的成员函数和成员变量的申明次序
public:在private:之前,成员函数在数据成员(变量)前
public:、protected:、private:,如果那一块没有,直接忽略即可。
1) typedefs和enums;
2) 常量;
3) 构造函数;
4) 析构函数;
5) 成员函数,含静态成员函数;
6) 数据成员,含静态数据成员。
(六) 子类在虚函数的申明时标明virtual
(七) 尽量让函数尽可能的小,这样便于维护和管理,一般一个函数在40行代码以内
(八) 所有继承必须是public的,如果私有继承了父类,在子类中应该实现父类的成员变量
(九) 引用形参加上const,如果要改变实参的值就要使用指针
(十) 所有参数必须明确指定,强制程序员考虑API和传入的各参数值,避免使用可能不为程序员所
知的缺省参数。
(十一) 使用sizeof(变量名)而不是sizeof(变量类型),这样做避免变量类型改变
(十二) 整数用0,实数用0.0,指针用NULL,字符(串)用'\0'
(十三) 我们强烈建议在任何可以使用的情况下使用const
(十四) 文件名要用小写,枚举值要全部大写,常量以k开头,命名空间要是小写的
(十五) 如果内联函数叫长就在定义一个文件原来的头文件为file.h内联函数所在的头文件为file_inc.h,宏要全部用大写
(十六) 构造函数和析构函数可以不写注释,若要写就要写构造函数对参数做了什么析构函数清理了什么
(十七) 函数参数较多时应该这样
ReturnType ClassName::ReallyLongFunctionName(Type par_name1,
Type par_name2,
Type par_name3) {
DoSomething();
...
}
(十八) 函数调用时如果参数较多可以这样
bool retval = DoSomething(averyveryveryverylongargument1,
argument2, argument3);
对齐
(十九) 关于构造函数的初始化参数列表建议参看MFC
本文提供了C++编程中的一系列最佳实践建议,包括减少头文件依赖、合理使用内联函数、禁止使用class类型的全局变量、局部变量的初始化、类成员的顺序等。还介绍了子类虚函数声明、函数规模控制、继承方式、参数使用规范等内容。
1465

被折叠的 条评论
为什么被折叠?



