软件编程规范
第一章 程序的版式
规则1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:由开发工具自动生成的代码可以不一致,但如果开发工具可以配置,则应该统一配
置缩进为4 个空格。
规则1-2:缩进或者对齐只使用空格键, 不能使用TAB 键
原因 :避免使用不同的编辑器阅读程序时, 因TAB 键所设置的空格数目不同而造成程序布局不整齐
规则1-3:相对独立的程序块之间、变量说明之后必须加空行。
说明 :以下情况应该是用空行分开:
1. 函数之间应该用空行分开
2. 一组局部变量声明和代码之间用空行分开 3. 用空行将代码按照逻辑片断划分
4. 除非函数非常简单( 如只有一两条语句),否则函数返回语句和其他语句用空行分开
5. 每个类声明之后应该加入空格同其他代码分开
示例:如下例子不符合规范。
if (!valid_ni(ni)) {
... // program code }
repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
6
软件编程规范
应如下书写:
if (!valid_ni(ni)) {
... // program code }
repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni;
规则1-4:较长的语句(>80字符)要分成多行书写 说明:以下情况应分多行书写
1. 长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
2. 若函数或过程中的参数较长,则要进行适当的划分
3. 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在
低优先级操作符处划分新行,操作符放在新行之首 示例:
perm_count_msg.head.len = 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
= SYS_get_sccp_statistic_state( stat_item );
report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER) && (n7stat_stat_item_valid (stat_item))
&& (act_task_table[taskno].result_data != 0));
n7stat_str_compare((BYTE *) & stat_object,
(BYTE *) & (act_task_table[taskno].stat_object), sizeof (_STAT_OBJECT));
n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER + index, stat_object );
7
软件编程规范
if ((taskno < max_act_task_number)
&& (n7stat_stat_item_valid (stat_item))) {
... // program code }
for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length) && (j < NewKeyword.word_length); i++, j++) {
... // program code }
for (i = 0, j = 0;
(i < first_word_length) && (j < second_word_length); ` i++, j++) {
... // program code }
规则1-5:不允许把多个短语句写在一行中,即一行只写一条语句。
说明:一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释
示例:如下例子不符合规范
rect.length = 0; rect.width = 0; 应如下书写
rect.length = 0; rect.width = 0;
规则1-6:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
8
软件编程规范
示例:如下例子不符合规范。
if (pUserCR == NULL) return; 应如下书写:
if (pUserCR == NULL) {
return; }
建议1-1:对齐只使用空格键,不使用TAB键。
说明:编辑器对TAB键所设置的空格数目不同,因此会造成程序布局不整齐。
建议1-2:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
建议1-3:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
示例:如下例子不符合规范。
for (...) {
... // program code }
if (...) {
... // program code }
void example_fun( void ) {
... // program code } 应如下书写。
for (...)
9
软件编程规范
{
... // program code }
if (...) {
... // program code }
void example_fun( void ) {
... // program code }
规则1-7:代码行之内应该留有适当的空格
说明:采用这种松散方式编写代码的目的是使代码更加清晰。代码行内应该适当的使用空格, 具体地说来:
1. 关键字之后要留空格。象const、virtual、inline、case 等关键字之后至少要留一个空格, 否则无法辨析关键字。象if、for、while 等关键字之后应留一个空格再跟左括号‘( ’, 以突出关键字。
2. 函数名之后不要留空格, 紧跟左括号’(’ , 以与关键字区别。
3. ‘( ’ 向后紧跟,‘ )’、‘ ,’、‘ ;’ 向前紧跟, 紧跟处不留空格。 4. ‘ ,’ 之后要留空格, 如Function(x, y, z)。如果‘ ;’ 不是一行的结束符号, 其后也要留空格, 如for (initialization; condition; update)。
5. 值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“ =”、“ +=” “ >=”、“ <=”、“ +”、“ *”、“ %”、“ &&”、“ ||”、“ <<” ,“ ^” 等二元操作符的前后应当加空格。
6. 一元操作符如“ !”、“ ~”、“ ++”、“ --”、“ &”( 地址运算符) 等 前后不加空格。
7. 象“[ ]”、“ .”、“ ->” 这类操作符前后不加空格。
示例:应该如下书写
10