Google C++ 编程风格学习

来源:互联网 发布:阿里云 盈利 编辑:程序博客网 时间:2024/05/01 14:37

《Google C++编程风格指南》出来有一段时间,最近才得以静下心来看,现记录一下在以后编码中值得注意的部分,对于一些已经普遍认可或约定成文的规则,就不再过多说明。

参考:《Google 开源项目风格指南》

一、头文件

1、尽量使用前置声明,避免头文件依赖的多米诺效应;

2、逻辑简单的短小函数可以使用内联函数来提高效率;

3、确定函数输入输出参数的顺序,并在项目中保持一致;

4、头文件的路径要清晰明了,顺序尽量按:本cpp直接依赖h文件、C库h文件、C++库文件、其他库h文件、本项目其他h文件


二、命名空间

1、源文件尽量使用匿名空间,避免命名冲突;

2、h文件不要使用匿名空间,而应该使用命名空间;

3、尽量不使用裸的全局函数,用静态成员函数或命名空间的非成员函数替代;


三、类

1、构造函数只进行无意义的初始话操作,不要做别的操作,有意义的初始话操作最好提供一个Init()函数来完成;

2、默认构造函数是否需要根据成员变量是否全为内建类型而定;

3、所有单参数的构造函数必须是explicit声明的;

4、尽量禁止使用拷贝和赋值构造函数,可以用以下宏来实现:

// 禁止使用拷贝构造函数和 operator= 赋值操作的宏// 应该类的 private: 中使用#define DISALLOW_COPY_AND_ASSIGN(TypeName) \            TypeName(const TypeName&); \            TypeName& operator=(const TypeName&);

5、只有数据时使用struct;

6、所有继承都应该是public的,若非,则使用组合原则;

7、尽量不使用多重继承,若非,则基类除第一个外其他必须为纯接口类;

8、尽量不使用运算符重载,而用相应的函数来替代。例如:使用Add()代替+运算符的重载;

9、函数尽量短小精悍,功能单一;


四、来自Google的技巧

1、懂得使用智能指针;

2、使用cpplint.py来检查风格;


五、其他

1、所有引用参数必须是const的;否则,用相应的指针来代替;

2、不要使用C++异常,若非,则说明代码逻辑不完整;

3、不要使用RTTI,单元测试除外;

4、应该使用C++风格的类型转换;

5、对于迭代器和其他模板对象使用前自增、前自减更有效率;

6、尽量使用const代替宏,若非,请在使用时#define,使用后立即#undef;

7、使用0表示整数,使用NULL表示空指针,使用‘\0’表示字符;

8、尽量使用sizeof(varname)代替sizeof(type);


六、命名约定

1、类型名称的每个单词首字母均大写,不包含下划线:MyExcitingClass,MyExcitingEnum;

2、变量名用小写,用下划线连接;

3、常量和宏全部大写;


七、注释

1、单行注释用//,多行注释用/**/;

2、在文件开头加文件注释声明版权和描述;

3、在类的定义前加类注释声明类功能;

4、应该有合适的函数声明;

5、特别变量要有变量注释;

6、巧妙的设计和算法要有注释;


八、格式

1、行长最多不应超过一屏的宽度;

2、要有适当的空格;



原创粉丝点击