C语言代码规范(草案)

C语言代码规范(草案)_第1张图片
此规范用于C项目代码的约束。

A.1 命名规范

1. 命名必须有意义, 不允许出现拼音, 另外慎用大写字母 ….

2. 命名如果包含有多个单词, 单词之间使用下划线连接(与windows相关的部分可使用windows的命名规范).

3. 头文件命名 : 突出主题, 适度简洁. 如 data_service.h (数据服务头文件)

4. 头文件前缀 : 头文件中的一切位于全局名字空间的标识符将会共享一个头文件前缀, 如可用 data 作为了 data_service.h 的前缀.

5. 局部变量 : 变量命名首先应该可以表达出具体代表的内容, 一些常见的推荐后缀: _num(数目), _pos(位置), _info(信息), _size(大小), _temp(短暂存在的对象), _status(状态), _flag(标志)等 另外推荐的前缀有 p_(指向...的指针) .

6. 全局变量 : 代码不推荐使用全局变量, 其命名同局部变量命名相同, 但其属于全局名字空间.

7. 结构体命名 : 结构体不推荐使用typedef进行重定义. 其属于全局名字空间.

8. 枚举 : 略.

9. 函数名 : 函数名属于全局名字空间, 需特别注意的是函数名和结构体的命名需要极为谨慎, 因为其如果被广泛使用, 要将其名字修改需要面临极大的困难. 推荐的函数命名格式为 头文件前缀 + 主语(可选) + 谓语 + 宾语.

如 data_load_data_file().

10. 宏命名 : 宏属于全局命名空间, 全部字母应大写.

11. 命名对齐 : 结构体内的结构成员名字应尽量对齐.

A.2 注释

1. 注释应使用 /* … */ 而不是 // …  .

2. 可选的注释形式 :

普通注释 : /* … */

多行注释 :

/*

* DATA_ID_LENGTH      : 数据标识符的最大长度, 且其以 '\0' 作为结束符.

* DATA_INDEX_ARRAY_MIN : 单独索引的最小项目个数.

* DATA_VERSION        : a.b (版本号占据两个字节).

*/

特殊注释 : /** … */.

3. 注释与注释对象不在同一行时, 应该位于其上方, 并与其对齐.

4. 在可以对齐的地方应对齐以美观.

A.3 代码书写.

1. 操作符和一部分的分隔符的上下文中应辅以空格. 如

int a, b, sum;

sum = a + b;

2. 过长一行代码可分成两行, 第二行对齐于一个合适的位置.

3. 函数局部变量声明结束后添加一个空行.

4. 函数返回语句前应有一个空行.

5. 各个逻辑代码段之间用空行间隔开来.

6. 抽象的代码应辅以适当的注释.

7. 关于花括号, 函数使用样式

函数声明

{
….
}

8. 关于花括号, 除了函数其他所有场合使用样式

语句 {

}

9. 函数局部变量应放置于最前面(正如C语言标准所要求).

10. 函数局部变量的初始化应靠近于其被第一次正式使用的地方.

A.4 头文件规范

其中 […] 为可选, {…} 为必选

1. 头文件应有一个注释以描述头文件 : 其内容包括{file_name}, {date}, {version},  {describe}, {update}, [copyright], [file_size].

2. 如前文所述, 每个头文件应有一个隐式的{头文件前缀}.

3. 头文件组织内容的格式为 :

{头文件注释}

{防止重复包含的宏定义}

[头文件包含]

[宏定义]

[数据类型定义]

[函数声明]

[全局变量]

[函数实现]

A.5 推荐的特性

1. 尽量使函数返回 int 值, 其中 0 代表正常返回. -1 代表致命的错误.

2. 尽量使可被重复使用的代码段保持一定的可重用性.

3. 尽量保持函数在一个不过长的长度.

4. 尽量不增加不必要的复杂性, 增进的复杂性意味着更多的出错可能性.

5. 使用 for 语句作为首选的控制语句, 且 for 语句最好有一个循环变量.

6. 函数内部尽量不请求与函数无关的内存分配, 内存管理应由函数的调用者具体负责.

7. 尽量使用标准库, 而不是第三方库(可移植性).

A.6 不推荐的特性

1. 禁用 goto 语句.

2. 不推荐使用 typedef 关键字.

3. 不推荐使用标准C语言之外的特性. 如 // 注释, 编译时长度不定的数组等.

4. 不推荐使用一些可能会产生未定义结果的特性.

5. 最后, 不推荐你必须符合上述所规定的所有规范.  ~.~


Date : 2015.04.25
Copyright © 2015  Handwritten document suite, hds.

你可能感兴趣的:(C语言代码规范(草案))