1 / 88
文档名称:

GoogleC 编程规范完整样稿.doc

格式:doc   大小:170KB   页数:88页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

GoogleC 编程规范完整样稿.doc

上传人:业精于勤 2020/11/29 文件大小:170 KB

下载得到文件列表

GoogleC 编程规范完整样稿.doc

文档介绍

文档介绍:: .
* 背景
谷歌开源项目大多使用C++开发。每一个C++程序员也全部知道,C++含有很多强大语言特征,但这种强大不可避免造成它复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。
本指南目标是经过具体叙述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则可在许可代码有效使用C++语言特征同时使其易于管理。
风格,也被视为可读性,关键指称管理C++代码****惯。使用术语风格有点用词不妥,因为这些****惯远不止源代码文件格式这么简单。
使代码易于管理方法之一是增强代码一致性,让她人能够读懂你代码是很关键,保持统一编程风格意味着能够轻松依据“模式匹配”规则推断多种符号含义。创建通用、必需****常见语和模式能够使代码愈加轻易了解,在一些情况下改变部分编程风格可能会是好选择,但我们还是应该遵照一致性标准,尽可能不这么去做。
本指南另一个见解是C++特征臃肿。C++是一门包含大量高级特征巨型语言,一些情况下,我们会限制甚至严禁使用一些特征使代码简化,避免可能造成多种问题,指南中列举了这类特征,并解释说为何这些特征是被限制使用。
由谷歌开发开源项目将遵照本指南约定。
注意:本指南并非C++教程,我们假定读者已经对C++很熟悉。
* 头文件
通常,(C++源文件)(头文件),也有部分例外,如单元测试代码和只包含main().cc文件。
正确使用头文件可令代码在可读性、文件大小和性能上大为改观。
下面规则将引导你规避使用头文件时多种麻烦。
1. #define保护
全部头文件全部应该使用#define预防头文件被多重包含(multiple inclusion),命名格式当是:<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)和其它部分比较短关键实施函数。
缺点:滥用内联将造成程序变慢,内联有可能是目标代码量或增或减,这取决于被内联函数大小。内联较短小存取函数通常会降低代码量,但内联一个很大函数(译者注:假如编译器许可话)将戏剧性增加代码量。在现代处理器上,因为愈加好利用指令缓存(instruction cache),小巧代码往往实施愈加快。
结论:一个比较适当处理规则是,不要内联超出10行函数。对于析构函数应慎重对待,析构函数往往比其表面看起来要长,因