Google C++ Style 笔记

 

一)  尽量不要让头文件包含其他过多的头文件,如果被包含的头文件要重新编译的话自己也要被编译,所以尽量使用前置申明
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++,api,Google,Class,mfc,enums)