Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c914b1e7
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
You need to sign in or sign up before continuing.
提交
c914b1e7
编写于
12月 01, 2021
作者:
S
Sven Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add review changes
Signed-off-by:
N
Sven Wang
<
wanghancai@huawei.com
>
上级
b6b5388b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
28 deletion
+28
-28
zh-cn/contribute/OpenHarmony-c-coding-style-guide.md
zh-cn/contribute/OpenHarmony-c-coding-style-guide.md
+25
-25
zh-cn/contribute/OpenHarmony-cpp-coding-style-guide.md
zh-cn/contribute/OpenHarmony-cpp-coding-style-guide.md
+3
-3
未找到文件。
zh-cn/contribute/OpenHarmony-c-coding-style-guide.md
浏览文件 @
c914b1e7
...
...
@@ -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-1
0"></a>规则2.10
初始化换行时要有缩进,或进行合理对齐
### <a name="r2-1
1"></a>规则2.11
初始化换行时要有缩进,或进行合理对齐
结构体或数组初始化时,如果换行应保持4空格缩进。
从可读性角度出发,选择换行点和对齐位置。
...
...
@@ -626,7 +626,7 @@ int c[][8] = {
-
左大括号放行末时,对应的右大括号需另起一行
-
左大括号被内容跟随时,对应的右大括号也应跟随内容
### <a name="r2-1
1"></a>规则2.11
结构体和联合体在按成员初始化时,每个成员初始化单独一行
### <a name="r2-1
2"></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-1
2"></a>规则2.12
编译预处理的"#"默认放在行首,嵌套编译预处理语句时,"#"可以进行缩进
### <a name="r2-1
3"></a>规则2.13
编译预处理的"#"默认放在行首,嵌套编译预处理语句时,"#"可以进行缩进
编译预处理的"#"统一放在行首;即便编译预处理的代码是嵌入在函数体中的,"#"也应该放在行首。
注意,开发过程尽量不要使用编译预处理宏。如果需使用,则应由专人进行统一管理。
## <a name="c2-14"></a>空格和空行
### <a name="r2-1
3"></a>规则2.13
水平空格应该突出关键字和重要信息,避免不必要的留白
### <a name="r2-1
4"></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 禁止通过声明的方式引用外部函数接口、变量
...
...
zh-cn/contribute/OpenHarmony-cpp-coding-style-guide.md
浏览文件 @
c914b1e7
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录