1、1-3:较长的语句(80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。 = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL );act_task_tableframe_id * STAT_TASK_CHECK_NUMBER + index.occupied = stat_poiindex.occupied;act_task_tabletaskno.duration_true_or_false = SYS_get_sccp_statis
2、tic_state( stat_item );report_or_not_flag = (taskno MAX_ACT_TASK_NUMBER) & (n7stat_stat_item_valid (stat_item) (act_task_tabletaskno.result_data != 0);1-4:循环、判定等语句中如有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。if (taskno max_act_task_number) (n7stat_stat_item_valid (stat_item) . ord_length) (j
3、id = pid; 文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必需列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日记等,头文件的注释中还应有函数功能简要说明。下面这段头文件的头注释比较标准,固然,并非局限于此格式,但上述信息建议要包括在内。/* Copyright (C), 1988-1999, Huawei Tech. Co., Ltd. File name: . History: Date: Author: Modification: 2. .*/2-3:源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/
4、功能、要紧函数及其功能、修改日记等。下面这段源文件的头注释比较标准,固然,并非局限于此格式,但上述信息建议要包括在内。/* FileName: Version : Description: - epssn_index;例2:repssn_ind = ssn_dataindex.repssn_index;/* get replicate sub system index and net indicator */2-9:关于所有有物理含义的变量、常量,若是其命名不是充分自注释的,在声明时都必需加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。/* active statis
5、tic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */2-10:数据结构声明(包括数组、结构、类、列举等),若是其命名不是充分自注释的,必需加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每一个域的注释放在此域的右方。可按如下形式说明列举/数据/联合结构。/* sccp interface with sccp user primitive message name */enum SCCP_US
6、ER_PRIMITIVE N_UNITDATA_IND, /* sccp notify sccp user unit data come */ N_NOTICE_IND, /* sccp notify user the network can not */ /* transmission this message */ N_UNITDATA_REQ, /* sccp users unit data transmission request*/;2-11:全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或进程存取它和存取时注意事项等的说明。/* The ErrorCode when S
7、CCP translate */* Global Title failure, as follows */ .) . break;else ProcessCFW_B(); .2-1:幸免在一行代码或表达式的中间插入注释。除非必要,不该在代码或表达中间插入注释,不然容易使代码可明白得性变差。2-2:通过对函数或进程、变量、结构等正确的命名和合理地组织代码的结构,使代码成为自注释的。清楚准确的函数、变量等的命名,可增加代码可读性,并减少没必要要的注释。在代码的功能、用意层次上进行注释,提供有效、额外的信息。注释的目的是说明代码的目的、功能和采纳的方式,提供代码之外的信息,帮忙读者明白得代码,避免没
8、必要的重复注释信息。如下注释意义不大。/* if receive_flag is TRUE */if (receive_flag)而如下的注释则给出了额外有效的信息。/* if mtp receive a message from links */2-4:在程序块的终止行右方加注释标记,以表明某程序块的终止。今世码段较长,专门是多重嵌套时,如此做能够使代码更清楚,更便于阅读。参见如下例子。if (.) .)*/ .),建议除要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是许诺的。变量,尤其是局部变量,若是用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来
9、,有可能为了那个小小的错误而花费大量的查错时刻。下面所示的局部变量名的概念方式能够借鉴。int liv_Width其变量名说明如下: l 局部变量(Local) (其它:g 全局变量(Global).) i 数据类型(Interger) v 变量(Variable) (其它:c 常量(Const).) Width 变量含义如此能够避免局部变量与全局变量重名。3-5:命名规范必需与所利用的系统风格维持一致,并在同一项目中统一,比如采纳UNIX的全小写加下划线的风格或大小写混排的方式,不要利用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是许诺
10、的。 Add_User不许诺,add_user、AddUser、m_AddUser许诺。3-1:除非必要,不要用数字或较奇怪的字符来概念标识符。如下命名,令人产生疑惑。#define _EXAMPLE_0_TEST_#define _EXAMPLE_1_TEST_void set_sls00( BYTE sls );应改成成心义的单词命名#define _EXAMPLE_UNIT_TEST_#define _EXAMPLE_ASSERT_TEST_void set_udt_msg_sls( BYTE sls );3-2:在同一软件产品内,应计划好接口部份标识符(变量、结构、函数及常量)的命名,避免编译、链接时产生冲突。对接口部份的标识符应该有更严格限制,避免冲突。如可规定接口部份的变量与常量之前加上“模块”标识等。3-3:用正确的反义词组命名具有互斥意义
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1