1 / 58
文档名称:

google c++编程风格().pdf

格式:pdf   大小:3,851KB   页数:58页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

google c++编程风格().pdf

上传人:小s 2022/6/22 文件大小:3.76 MB

下载得到文件列表

google c++编程风格().pdf

相关文档

文档介绍

文档介绍:: .


尽量不这样去做。

本指南的另一个观点是 C++特性的臃肿。C++是一门包含大量高级特性的巨型语言,某些情况下,我们会
限制甚至禁止使用某些特性使代码简化,避免可能导致的各种问题,指南中列举了这类特性,并解释说为
什么这些特性是被限制使用的。

注意:本指南并非 C++教程,我们假定读者已经对 C++非常熟悉。头文件
通常,(C++的源文件)(头文件),也有一些例外,如单元测试代
码和只包含 main()。

正确使用头文件可令代码在可读性、文件大小和性能上大为改观。

下面的规则将引导你规避使用头文件时的各种麻烦。


1. #define保护
所 有 头 文 件 都 应 该 使 用 #define防 止 头 文 件 被 多 重 包 含 ( multipleinclusion ), 命 名 格 式 为 :
<PROJECT>_<PATH>_<FILE>_H_

为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径。例如,项目 foo中的头文件
foo/src/bar/:

#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
...
#endif // FOO_BAR_BAZ_H_

2. 头文件依赖
使用前置声明(forward declarations)#include的数量。

当一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改,代码就要重新
编译。如果你的头文件包含了其他头文件,这些头文件的任何改变也将导致那些包含了你的头文件的代码
重新编译。因此,我们应该尽量少的包含头文件,尤其是那些包含在其他头文件中的。

使用前置声明可以显著减少需要包含的头文件数量。举例说明:头文件中用到类 File,但不需要访问 File
的声明,则头文件中只需前置声明 class无需 File;#include "file/base/"。

在头文件如何做到使用类 Foo而无需访问类的定义?
1)将数 据成员类型声明为 Foo或 Foo* ; &
2)参 数、返回值类型为 Foo的函数只是声明(但不定义实现);
3)静态 数据成员的类型可以被声明为 Foo,因为静态数据成员的定义在类定义之外。
另一方面,如果你的类是 Foo的子类,或者含有类型为 Foo的非静态数据成员,则必须为之包含头文件。

有时,使用指针成员(pointer members,如果是 scoped_ptr更好)替代对象成员(object members)
的确更有意义。然而,这样的做法会降低代码可读性及执行效率。如果仅仅为了少包含头文件,还是不要
这样替代的好。当然,.cc文件无论如何都需要所使用类的定义部分,自然也就会包含若干头文件。

注:能依赖声明的就不要依赖定义。

3. 内联函数

只有当函数只有 10行甚至更少时才会将其定义为内联函数(inline )function。

定义(Definition):当函数被声明为内联函数之后,编译器可能会将其内联展开,无需按通常的函数调用
机制调用内联函数。

优点:当函数体比较小的时候,内联该函数可以令目标代码更加高效。对于存取函数(accessor、mutator)
以及其他一些比较短的关键执行函数。

缺点:滥用内联将导致程序变慢,内联有可能是目标代码量或增或减,这取决于被内联的函数的大小。内
联较短小的存取函数通常会减少代码量,但内联一个很大的函数(注:如果编译器允许的话)将显著增加
代码量。在现代处理器上,由于更好的利用指令缓存( inst