目录 1排版 6 2注释 11 3标识符命名 18 4可读性 20 变量、结构 6函数、过程 7可测性 8程序效率 9质量保证 10代码编辑、编译、审查 2860402 11代码测试、维护 12宏
目 录 1 排版 6 2 注释 11 3 标识符命名 18 4 可读性 20 5 变量、结构 22 6 函数、过程 28 7 可测性 36 8 程序效率 40 9 质量保证 44 10 代码编辑、编译、审查 50 11 代码测试、维护 52 12 宏 53
软件编程规范总则 1排版 1排版 1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 -2:相对独立的程序块之间、变量说明之后必须加空行 示例:如下例子不符合规范 repssn ind ssn data [index]. repssn index; repssn ni ssn data[index].nii 应如下书写 if (!valid ni(ni) repssn ind ssn data[index]. repssn index repssn ni =ssn data[index].ni 1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行, 操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 例 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 tat poi[index]. occupied act task table[taskno] duration true or false sYs get sccp statistic state( stat item )i report or not flag =((tas kno MAX ACT TASK NUMBER 仅供内部使用3
软件编程规范总则 1 排版 仅供内部使用 3 1 排版 ¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 ¹1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 if (!valid_ni(ni)) { ... // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni; 应如下书写 if (!valid_ni(ni)) { ... // program code } repssn_ind = ssn_data[index].repssn_index; repssn_ni = ssn_data[index].ni; ¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行, 操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 示例: 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)
软件编程规范总则 1排版 (n7stat stat item valid (stat item)) (act task table[taskno] result data I= 0))i 仅供内部使用4
软件编程规范总则 1 排版 仅供内部使用 4 && (n7stat_stat_item_valid (stat_item)) && (act_task_table[taskno].result_data != 0));
软件编程规范总则 1排版 1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低 优先级操作符处划分新行,操作符放在新行之首 例 if((tas kno max act task number &&(n7stat stat item valid (stat item))) for (i=0,1=0;(i< BufferKeyword [word index]. word lengt & (< NewKe word word length)i 1++, 3++) // program code (i first word length)&&(]< second word length) // program code 1-5:若函数或过程中的参数较长,则要进行适当的划分。 示例 n7stat str compare((BYTE *) stat object (BYTE *)&(act task table [taskno] stat object) n7stat flash act duration( stat item, frame id *STAT TASK CHECK NUMBER 1-6:不允许把多个短语句写在一行中,即一行只写一条语句。 例:如下例子不符合规范 rect length =0; rect width =0 应如下书写 仅供内部使用5
软件编程规范总则 1 排版 仅供内部使用 5 ¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低 优先级操作符处划分新行,操作符放在新行之首。 示例: 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:若函数或过程中的参数较长,则要进行适当的划分。 示例: 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 ); ¹1-6:不允许把多个短语句写在一行中,即一行只写一条语句。 示例:如下例子不符合规范。 rect.length = 0; rect.width = 0; 应如下书写