文档介绍:CMMI ML-3
C/C++语言编码规范(TS)
文件编号: TS-G-05
编制
日期
审核
日期
批准
日期
变更记录
版本号
变更日期
变更类型
变更人
变更摘要
备注
目录
变更记录 2
1. 排版规范 4
. 缩进 4
. 空行 4
. 分行 4
. 分界符 5
. 空格 6
. 宏定义 6
. 类定义 6
. 其他 7
2. 命名规范 8
. 原则 8
. 命名注释 8
. 命名风格统一 8
. 变量命名 9
3. 变量结构 10
. 赋值检查 10
. 变量初始化 10
. 单一功能结构体 10
. 结构中的元素个数 11
4. 函数过程 13
. 避免直接使用函数参数 13
. 简单功能函数 14
. 避免多参数函数 14
. 参数检查 15
. 重复代码 16
5. 注释规范 17
. 文件注释 17
. 函数注释 18
. 代码注释 18
. 注释位置 19
排版规范
缩进
程序块要采用缩进风格编写,缩进的长度为4个空格,方式为IDE自动缩进或TAB缩进。一行程序以小于65字符为宜,不要写得过长。对于由开发工具自动生成的代码可以有不一致。函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进风格。
空行
相对独立的程序块之间、变量说明之后必须加空行。
示例:
if (!valid_ni(ni))
{
... // program code
}
//空行
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
分行
当语句超出或即将超出规定的列宽,遵循以下规则进行换行:
在逗号后换行。
在运算符,关键字前换行。
选择在较高级别(higher-level)的运算符处断开。
新的一行应该与上一行同一级别表达式的开头处对齐。
如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。
规则1优先于规则2。
当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。
示例:
= NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM * sizeof( _UL );
act_task_table[frame_id * STAT_TASK_CHECK_NUMBER
+ index].occupied
= stat_poi[index].occupied;
act_task_table[taskno].duration_true_or_false
= p_statistic_state( stat_item );
分界符
程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
示例:
for (...)
{
... // program code
}
if (...)
{
... // program code
}
else
{
... // program code
}
void example_fun( void )
{
... // program code
}
空格
1. 关键字后需要有空格
2. 运算符前后要有空格
3. 功能段之间可以适当使用空格
4. 要遵循手写英语中标点符号的规范,’, ’和’; ’后要加空格,’( ’除外,
例如:
background = new Color(red, green, blue);
在操作符前后可以使用空格使代码增强代码可读性。
对于与英文意义不同的操作符不遵循上述规则,例如:’.’和’->’后不用空格。
宏定义
在宏定义中,尽量使用下面结构
#ifndef
#define
#endif
类定义
每个类定义中都要依次包含‘ public’, ‘ protected ’, ‘ private ’部分。每个部分中要最先给出构造函数和析构函数,成员函数按照函数名字母排序。
做前缀