Skip to content

Commit

Permalink
Merge pull request zh-google-styleguide#71 from xr1s/master
Browse files Browse the repository at this point in the history
修正了几处rst文件格式错误,还有主要是更新了一下scope.rst
  • Loading branch information
yangyubo authored Sep 7, 2017
2 parents 0474315 + 6175eea commit ab5d02b
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 121 deletions.
4 changes: 2 additions & 2 deletions google-cpp-styleguide/classes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@

在类型定义中, 类型转换运算符和单参数构造函数都应当用 ``explicit`` 进行标记. 一个例外是, 拷贝和移动构造函数不应当被标记为 ``explicit``, 因为它们并不执行类型转换. 对于设计目的就是用于对其他类型进行透明包装的类来说, 隐式类型转换有时是必要且合适的. 这时应当联系项目组长并说明特殊情况.

不能以一个参数进行调用的构造函数不应当加上 ``explicit``. 接受一个 ``std::initializer_list`` 作为参数的构造函数也应当省略 ``explicit``, 以便支持拷贝初始化 (例如 ``MyType m = {1, 2};).
不能以一个参数进行调用的构造函数不应当加上 ``explicit``. 接受一个 ``std::initializer_list`` 作为参数的构造函数也应当省略 ``explicit``, 以便支持拷贝初始化 (例如 ``MyType m = {1, 2};)`` .

.. _copyable-and-movable-types:

Expand Down Expand Up @@ -188,7 +188,7 @@

**定义**

当子类继承基类时, 子类包含了父基类所有数据及操作的定义. C++ 实践中, 继承主要用于两种场合: 实现继承, 子类继承父类的实现代码; :ref:`<接口继承 interface>`, 子类仅继承父类的方法名称.
当子类继承基类时, 子类包含了父基类所有数据及操作的定义. C++ 实践中, 继承主要用于两种场合: 实现继承, 子类继承父类的实现代码; :ref:`接口继承 <interface>`, 子类仅继承父类的方法名称.

**优点**

Expand Down
2 changes: 1 addition & 1 deletion google-cpp-styleguide/formatting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ Lambda 表达式对形参和函数体的格式化和其他函数一致; 捕获
y1, y2, y3,
z1, z2, z3);

.. _braced-initializer-list-format
.. _braced-initializer-list-format:

9.7. 列表初始化格式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
20 changes: 10 additions & 10 deletions google-cpp-styleguide/headers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

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

.. _forward-declarations:
Expand All @@ -51,16 +51,16 @@

尽可能地避免使用前置声明。使用 ``#include`` 包含需要的头文件即可。

定义:
**定义:**

所谓「前置声明」(forward declaration)是类、函数和模板的纯粹声明,没伴随着其定义.

优点:
**优点:**

* 前置声明能够节省编译时间,多余的 ``#include`` 会迫使编译器展开更多的文件,处理更多的输入。
* 前置声明能够节省不必要的重新编译的时间。 ``#include`` 使代码因为头文件中无关的改动而被重新编译多次。

缺点:
**缺点:**

* 前置声明隐藏了依赖关系,头文件改动时,用户的代码会跳过必要的重新编译过程。
* 前置声明可能会被库的后续更改所破坏。前置声明函数或模板有时会妨碍头文件开发者变动其 API. 例如扩大形参类型,加个自带默认参数的模板形参等等。
Expand All @@ -84,7 +84,7 @@
* 前置声明了不少来自头文件的 symbol 时,就会比单单一行的 ``include`` 冗长。
* 仅仅为了能前置声明而重构代码(比如用指针成员代替对象成员)会使代码变得更慢更复杂.

结论:
**结论:**

* 尽量避免前置声明那些定义在其他项目中的实体.
* 函数:总是使用 ``#include``.
Expand All @@ -101,19 +101,19 @@

只有当函数只有 10 行甚至更少时才将其定义为内联函数.

定义:
**定义:**

当函数被声明为内联函数之后, 编译器会将其内联展开, 而不是按通常的函数调用机制进行调用.

优点:
**优点:**

只要内联的函数体较小, 内联该函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短, 性能关键的函数, 鼓励使用内联.

缺点:
**缺点:**

滥用内联将导致程序变得更慢. 内联可能使目标代码量或增或减, 这取决于内联函数的大小. 内联非常短小的存取函数通常会减少代码大小, 但内联一个相当大的函数将戏剧性的增加代码大小. 现代处理器由于更好的利用了指令缓存, 小巧的代码往往执行更快。

结论:
**结论:**

一个较为合理的经验准则是, 不要内联超过 10 行的函数. 谨慎对待析构函数, 析构函数往往比其表面看起来要更长, 因为有隐含的成员和基类析构函数被调用!

Expand Down Expand Up @@ -169,7 +169,7 @@ __ forward-declarations_
#include "base/commandlineflags.h"
#include "foo/public/bar.h"

例外:
**例外:**

有时,平台特定(system-specific)代码需要条件编译(conditional includes),这些代码可以放到其它 includes 之后。当然,您的平台特定代码也要够简练且独立,比如:

Expand Down
2 changes: 1 addition & 1 deletion google-cpp-styleguide/others.rst
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@

.. code-block:: c++

int64_t my_value = 0×123456789LL;
int64_t my_value = 0x123456789LL;
uint64_t my_mask = 3ULL << 48;


Expand Down
Loading

0 comments on commit ab5d02b

Please sign in to comment.