Google C++规范 中文版
### Google C++ 规范详解 #### 背景与目的 Google的大多数项目采用C++进行开发。C++作为一种功能强大的语言,虽然提供了丰富的特性,但这些特性也可能带来复杂性和潜在的问题,如代码易出错、难以阅读和维护等。为此,Google制定了《C++编程风格指南》,旨在通过明确的编码规范来规避这些复杂性,确保代码不仅能够有效地利用C++的语言特性,同时也易于管理和维护。 #### 头文件 **1. #define保护** 所有头文件都应当使用`#define`指令来防止被重复包含。定义的宏名应基于其在项目源代码树中的完整路径,以确保全局唯一性。例如,对于位于`foo/src/bar/baz.h`的头文件,相应的预处理宏定义如下: ```cpp #ifndef FOO_SRC_BAR_BAZ_H_ #define FOO_SRC_BAR_BAZ_H_ // ... 头文件内容 ... #endif // FOO_SRC_BAR_BAZ_H_ ``` 这种做法可以避免因多次包含同一头文件而导致的编译错误。 **2. 头文件依赖** 为了提高代码的可读性和性能,应尽可能地减少头文件中的`#include`语句。这可以通过以下方法实现: - **前置声明**:当只需要使用某个类的引用或指针时,可以在头文件中仅做类的前置声明,而不是包含整个类的定义。例如,如果一个类`A`需要使用另一个类`B`的指针,只需在`A`的头文件中声明`class B;`即可,而不必包含`B`的头文件。 - **数据成员类型**:若类的数据成员是另一个类的对象,且仅需要该对象的引用或指针,那么可以将数据成员声明为指针或引用类型。 - **函数参数和返回值**:对于只在声明中使用的类,可以仅声明不定义具体实现,这样就不需要包含该类的头文件。 通过这些方法,可以显著减少头文件之间的相互依赖,从而减少因一个头文件更改而导致的大规模重新编译。 **3. 内联函数** 内联函数(`inline`)在C++中是一个特殊的功能,它允许编译器在函数调用处插入函数体,从而消除函数调用的开销。但内联也有其局限性和副作用,例如: - **优点**:对于非常短小的函数(如存取器、修改器等),内联可以提高程序执行效率,减少函数调用的开销。 - **缺点**:如果内联过长的函数,可能会导致生成的目标代码膨胀,进而影响程序的性能。 因此,《Google C++编程风格指南》建议,只有当函数不超过10行时才考虑使用`inline`关键字。此外,对于析构函数等特殊函数,需要特别注意它们的实际长度,因为它们可能包含一些隐式调用。 《Google C++编程风格指南》通过一系列具体的规范和建议,帮助开发者编写出更加清晰、一致且高效的C++代码。这些规范覆盖了从头文件的组织到内联函数的应用等多个方面,旨在确保代码的可维护性和可读性,从而提高整体项目的质量和效率。
剩余57页未读,继续阅读
- zymxeeri2012-07-23很不错的C++规范,学习了!
- runlake2013-02-22很好的编程规范, 谢谢分享!
- 粉丝: 429
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助