Google C++风格指南,中文版第3.180版,由yospaly和yulefox于2011年10月17日发布,是Google针对其开源项目制定的一套C++编程规范。这份指南旨在提供一致的编码风格和最佳实践,以提升代码质量、可读性和维护性。
1. 头文件管理:
- `#define`保护:建议避免全局`#define`,以减少名称冲突和意外修改。
- 头文件依赖:遵循“一次包含”的原则,减少不必要的头文件包含,提高编译效率。
2. 函数和内联:
- 内联函数:提倡使用内联函数,但仅在函数体小且频繁调用的情况下,以减少函数调用开销。
- `-inl.h`文件:将内联函数定义移动到单独的头文件中,保持接口简洁。
3. 参数顺序:
- 推崇参数按使用频率或逻辑顺序排列,方便阅读。
4. 包含路径和顺序:
- 建议使用标准库路径,并遵循特定的包含顺序,以确保查找优先级正确。
5. 作用域:
- 名字空间:鼓励使用名字空间组织代码,避免全局命名冲突。
- 嵌套类:明确区分内部和外部类,以增强代码清晰度。
- 非成员函数和静态成员函数:明确区分它们的作用范围。
6. 类设计:
- 构造函数:强调构造函数的职责,如初始化和验证输入。
- 构造函数类型:包括默认构造、显式构造和拷贝构造。
- 类与结构体:区分两者,结构体通常用于值类型,而类支持更复杂的面向对象特性。
- 继承:遵循单一继承原则,必要时考虑多重继承。
- 运算符重载:仅在有明确理由时进行,确保一致性。
7. 存取控制:
- 提倡使用访问修饰符(public, protected, private)来控制类成员的可见性。
8. 编程习惯:
- 声明顺序:确保成员变量和函数的声明符合一定的顺序,如先公有后私有。
- 简短函数:提倡编写简洁、只做一件事的函数,以提高代码可读性。
9. Google特色技术:
- 智能指针:推广使用RAII(Resource Acquisition Is Initialization)策略,管理内存资源。
- cpplint:代码检查工具,用于检测潜在的编码问题。
10. 其他C++特性:
- 引用参数:使用引用传递大对象,提高效率。
- 函数重载:合理使用,避免过度复杂。
- 缺省参数:仅在必要时使用,防止滥用。
- 变长数组和alloca():谨慎使用,可能与现代C++标准不兼容。
- 友元:仅当没有其他解决方案时,才使用友元。
- 异常处理:遵循异常安全原则,确保程序的健壮性。
- 运行时类型识别:根据需求选择适当的机制。
- 类型转换:明确转换类型,避免潜在错误。
- 流:遵循一致的流操作风格。
- 自增/自减运算符:使用前缀形式,避免隐式类型转换带来的问题。
- const的使用:鼓励使用const来表示常量和只读属性。
这份指南为C++开发者提供了一套实用的编码规范,有助于创建高效、易读和维护的Google风格代码。