You need to sign in or sign up before continuing.
提交 c914b1e7 编写于 作者: S Sven Wang

add review changes

Signed-off-by: NSven Wang <wanghancai@huawei.com>
上级 b6b5388b
......@@ -314,11 +314,11 @@ enum BaseColor {
## <a name="c2-1"></a>行宽
### <a name="a2-1"></a>建议2.1 行宽不超过 120 个字符
### <a name="r2-1"></a>规则2.1 行宽不超过 120 个字符
代码行宽不宜过长,否则不利于阅读。
控制行宽长度可以间接的引导开发去缩短函数、变量的命名,减少嵌套的层数,提升代码可读性。
强烈建议和要求每行字符数不要超过 **120** 个;除非超过 **120** 能显著增加可读性,并且不会隐藏信息。
要求每行字符数不要超过 **120** 个;除非超过 **120** 能显著增加可读性,并且不会隐藏信息。
虽然现代显示器分辨率已经很高,但是行宽过长,反而提高了阅读理解的难度;跟本规范提倡的“清晰”、“简洁”原则相背。
如下场景不宜换行,可以例外:
......@@ -333,14 +333,14 @@ enum BaseColor {
```
## <a name="c2-2"></a>缩进
### <a name="r2-1"></a>规则2.1 使用空格进行缩进,每次缩进4个空格
### <a name="r2-2"></a>规则2.2 使用空格进行缩进,每次缩进4个空格
只允许使用空格(space)进行缩进,每次缩进为 **4** 个空格。不允许使用Tab键进行缩进。
当前几乎所有的集成开发环境(IDE)和代码编辑器都支持配置将Tab键自动扩展为**4**空格输入,请配置你的代码编辑器支持使用空格进行缩进。
## <a name="c2-3"></a>大括号
### <a name="r2-2"></a>规则2.2 使用 K&R 缩进风格
### <a name="r2-3"></a>规则2.3 使用 K&R 缩进风格
**K&R风格**
换行时,函数左大括号另起一行放行首,并独占一行;其他左大括号跟随语句放行末。
......@@ -364,7 +364,7 @@ int Foo(int a)
## <a name="c2-4"></a>函数声明和定义
### <a name="r2-3"></a>规则2.3 函数声明、定义的返回类型和函数名在同一行;函数参数列表换行时应合理对齐
### <a name="r2-4"></a>规则2.4 函数声明、定义的返回类型和函数名在同一行;函数参数列表换行时应合理对齐
在声明和定义函数的时候,函数的返回值类型应该和函数名在同一行。
......@@ -400,7 +400,7 @@ ReturnType ReallyReallyReallyReallyLongFunctionName( // 行宽不满
## <a name="c2-5"></a>函数调用
### <a name="r2-4"></a>规则2.4 函数调用参数列表换行时保持参数进行合理对齐
### <a name="r2-5"></a>规则2.5 函数调用参数列表换行时保持参数进行合理对齐
函数调用时,函数参数列表如果换行,应该进行合理的参数对齐。
左圆括号总是跟函数名,右圆括号总是跟最后一个参数。
......@@ -429,7 +429,7 @@ int result = DealWithStructureLikeParams(left.x, left.y, // 表示一组相
## <a name="c2-6"></a>条件语句
### <a name="r2-5"></a>规则2.5 条件语句必须要使用大括号
### <a name="r2-6"></a>规则2.6 条件语句必须要使用大括号
我们要求条件语句都需要使用大括号,即便只有一条语句。
理由:
......@@ -443,7 +443,7 @@ if (objectIsNotExist) { // Good:单行条件语句也加大括号
}
```
### <a name="r2-6"></a>规则2.6 禁止 if/else/else if 写在同一行
### <a name="r2-7"></a>规则2.7 禁止 if/else/else if 写在同一行
条件语句中,若有多个分支,应该写在不同行。
......@@ -463,7 +463,7 @@ if (someConditions) { ... } else { ... } // Bad: else 与 if 在同一行
## <a name="c2-7"></a>循环
### <a name="r2-7"></a>规则2.7 循环语句必须使用大括号
### <a name="r2-8"></a>规则2.8 循环语句必须使用大括号
和条件表达式类似,我们要求for/while循环语句必须加上大括号,即便循环体是空的,或循环语句只有一条。
```c
......@@ -491,7 +491,7 @@ while (condition); // Bad:使用分号容易让人误解是while语句中
## <a name="c2-8"></a>switch语句
### <a name="r2-8"></a>规则2.8 switch 语句的 case/default 要缩进一层
### <a name="r2-9"></a>规则2.9 switch 语句的 case/default 要缩进一层
switch 语句的缩进风格如下:
```c
......@@ -520,7 +520,7 @@ default: // Bad: default 未缩进
## <a name="c2-9"></a>表达式
### <a name="a2-2"></a>建议2.2 表达式换行要保持换行的一致性,操作符放行末
### <a name="a2-1"></a>建议2.1 表达式换行要保持换行的一致性,操作符放行末
较长的表达式,不满足行宽要求的时候,需要在适当的地方换行。一般在较低优先级操作符或连接符后面截断,操作符或连接符放在行末。
操作符、连接符放在行末,表示“未结束,后续还有”。
......@@ -549,7 +549,7 @@ int sum = longVaribleName1 + longVaribleName2 + longVaribleName3 +
## <a name="c2-10"></a>变量赋值
### <a name="r2-9"></a>规则2.9 多个变量定义和赋值语句不允许写在一行
### <a name="r2-10"></a>规则2.10 多个变量定义和赋值语句不允许写在一行
每行最好只有一个变量初始化的语句,更容易阅读和理解。
......@@ -584,7 +584,7 @@ for (i = 0; i < row; i++) {
初始化包括结构体、联合体及数组的初始化
### <a name="r2-10"></a>规则2.10 初始化换行时要有缩进,或进行合理对齐
### <a name="r2-11"></a>规则2.11 初始化换行时要有缩进,或进行合理对齐
结构体或数组初始化时,如果换行应保持4空格缩进。
从可读性角度出发,选择换行点和对齐位置。
......@@ -626,7 +626,7 @@ int c[][8] = {
- 左大括号放行末时,对应的右大括号需另起一行
- 左大括号被内容跟随时,对应的右大括号也应跟随内容
### <a name="r2-11"></a>规则2.11 结构体和联合体在按成员初始化时,每个成员初始化单独一行
### <a name="r2-12"></a>规则2.12 结构体和联合体在按成员初始化时,每个成员初始化单独一行
C99标准支持结构体和联合体按照成员进行初始化,标准中叫"指定初始化"(designated initializer)。 如果按照这种方式进行初始化,每个成员的初始化单独一行。
```c
......@@ -645,7 +645,7 @@ struct Date date = { // Good:使用指定初始化方式时,每行初始
## <a name="c2-12"></a>指针
### <a name="a2-3"></a>建议2.3 指针类型"\*"跟随变量名或者类型,不要两边都留有空格或都没有空格
### <a name="a2-2"></a>建议2.2 指针类型"\*"跟随变量名或者类型,不要两边都留有空格或都没有空格
声明或定义指针变量或者返回指针类型函数时,"\*" 靠左靠右都可以,但是不要两边都有或者都没有空格。
```c
......@@ -673,14 +673,14 @@ int Foo(const char * restrict p); // OK.
## <a name="c2-13"></a>编译预处理
### <a name="r2-12"></a>规则2.12 编译预处理的"#"默认放在行首,嵌套编译预处理语句时,"#"可以进行缩进
### <a name="r2-13"></a>规则2.13 编译预处理的"#"默认放在行首,嵌套编译预处理语句时,"#"可以进行缩进
编译预处理的"#"统一放在行首;即便编译预处理的代码是嵌入在函数体中的,"#"也应该放在行首。
注意,开发过程尽量不要使用编译预处理宏。如果需使用,则应由专人进行统一管理。
## <a name="c2-14"></a>空格和空行
### <a name="r2-13"></a>规则2.13 水平空格应该突出关键字和重要信息,避免不必要的留白
### <a name="r2-14"></a>规则2.14 水平空格应该突出关键字和重要信息,避免不必要的留白
水平空格应该突出关键字和重要信息,每行代码尾部不要加空格。 总体规则如下:
- if, switch, case, do, while, for 等关键字之后加空格;
......@@ -769,7 +769,7 @@ switch (var) { // Good: switch 关键字后面有1空格
注意:当前的集成开发环境(IDE)和代码编辑器都可以设置删除行尾的空格,请正确配置你的编辑器。
### <a name="a2-4"></a>建议2.4 合理安排空行,保持代码紧凑
### <a name="a2-3"></a>建议2.3 合理安排空行,保持代码紧凑
减少不必要的空行,可以显示更多的代码,方便代码阅读。下面有一些建议遵守的规则:
- 根据上下内容的相关程度,合理安排空行;
......@@ -818,7 +818,7 @@ int Foo(void)
写注释时要换位思考,用注释去表达此时读者真正需要的信息。在代码的功能、意图层次上进行注释,即注释解释代码难以表达的意图,不要重复代码信息。
修改代码时,也要保证其相关注释的一致性。只改代码,不改注释是一种不文明行为,破坏了代码与注释的一致性,让阅读者迷惑、费解,甚至误解。
使用英文进行注释。
使用**英文**进行注释。
必须要加注释说明场合如下(包含但不限于列举的场合):
1、模块对外提供的接口头文件必须对函数进行注释。
......@@ -1012,7 +1012,7 @@ switch (var) {
## <a name="c4-1"></a>头文件职责
头文件是模块或文件的对外接口。
头文件中适合放置接口的声明,不适合放置实现(内联函数除外)。
头文件中适合放置接口的声明,不允许放置实现(内联函数除外)。
头文件应当职责单一。头文件过于复杂,依赖过于复杂还是导致编译时间过长的主要原因。
### <a name="a4-1"></a>建议4.1 每一个.c文件都应该有相应的.h文件,用于声明需要对外公开的接口
......@@ -1088,17 +1088,17 @@ static void Bar(void)
为防止头文件被多重包含,所有头文件都应当使用 #define 作为包含保护;不要使用 #pragma once
定义包含保护符时,应该遵守如下规则:
- 保护符使用唯一名称;建议考虑项目源代码树顶层以下的文件路径
- 保护符使用唯一名称;统一使用子系统名_部件名_文件名的定义规则。
- 不要在受保护部分的前后放置代码或者注释,文件头注释除外。
假定 timer 模块的 timer.h,其目录为 `timer/include/timer.h`。其保护符若使用 'TIME_H' 很容易不唯一,所以使用项目源代码树的全路径,如:
假定 util 子系统 timer 部件的 timer.h,其目录为 `timer/include/timer.h`。其保护符若使用 'TIME_H' 很容易不唯一,按规则定义如:
```c
#ifndef TIMER_INCLUDE_TIMER_H
#define TIMER_INCLUDE_TIMER_H
#ifndef UTIL_TIMER_TIMER_H
#define UTIL_TIMER_TIMER_H
...
#endif
#endif // UTIL_TIMER_TIMER_H
```
### <a name="r4-5"></a>规则4.3 禁止通过声明的方式引用外部函数接口、变量
......
......@@ -53,7 +53,7 @@ __驼峰风格(CamelCase)__
上表中__变量__是指除常量定义以外的其他变量,均使用小驼峰风格。
## <a name="c2-2"></a> 文件命名
### <a name="a2-2-1"></a>建议2.2.1 C++文件以.cpp结尾,头文件以.h结尾
### <a name="r2-2-1"></a>规则2.2.1 C++文件以.cpp结尾,头文件以.h结尾
我们推荐使用.h作为头文件的后缀,这样头文件可以直接兼容C和C++。
我们推荐使用.cpp作为实现文件的后缀,这样可以直接区分C++代码,而不是C代码。
......@@ -66,7 +66,7 @@ __驼峰风格(CamelCase)__
但是对于本文档,我们默认使用.h和.cpp作为后缀。
### <a name="a2-2-2"></a>建议2.2.2 C++文件名和类名保持一致
### <a name="r2-2-2"></a>规则2.2.2 C++文件名和类名保持一致
C++的头文件和cpp文件名和类名保持一致,使用下划线小写风格。
如果有一个类叫DatabaseConnection,那么对应的文件名:
......@@ -199,7 +199,7 @@ namespace Utils {
## <a name="c3-1"></a>行宽
### <a name="a3-10-1"></a>建议3.1.1 行宽不超过 120 个字符
### <a name="r3-1-1"></a>规则3.1.1 行宽不超过 120 个字符
建议每行字符数不要超过 120 个。如果超过120个字符,请选择合理的方式进行换行。
例外:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册