@Purpose
2017-04-04T08:27:21.000000Z
字数 3537
阅读 1766
学习笔记
if(code){if(code){/*code*/}}
int Date;int Time;if(code){/*code*/}for(code){/*code*/}
较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
不允许把多个短语句写在一行中,即一行只写一条语句。
/*Wrong*/rect.length= 0; rect.width = 0;/*Right*/rect.length= 0;rect.width =0;
/*Wrong*/if (pUserCR== NULL) return;/*Right*/if (pUserCR== NULL){return;}
对齐只使用空格键,不使用TAB键。
以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用BC作为编辑器合版本,因为BC会自动将8个空格变为一个TAB键,因此使用BC合入的版本大多会将缩进变乱。
函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
一行程序以小于80字符为宜,不要写得过长。
/******************************Copyright: 1988-1999, Huawei Tech. Co., Ltd.File name: 文件名Description: 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系Author: 作者Version: 版本Date: 完成日期History: 修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述。*************************************/
/*************************************************Function: // 函数名称Description: // 函数功能、性能等的描述Calls: // 被本函数调用的函数清单Called By: // 调用本函数的函数清单Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)Input: // 输入参数说明,包括每个参数的作用、取值说明及参数间关系。Output: // 对输出参数的说明。Return: // 函数返回值的说明Others: // 其它说明*************************************************/
边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除,注释的内容要清楚、明了,含义准确,防止注释二义性。
注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
/* getreplicate sub system index and net indicator */repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;
/* activestatistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */
/* sccpinterface with sccp user primitive message name */enumSCCP_USER_PRIMITIVE{N_UNITDATA_IND, /* sccp notify sccp user unit data come*/N_NOTICE_IND, /* sccp notify user the No.7 network cannot *//* transmission this message */N_UNITDATA_REQ, /* sccp user's unit data transmissionrequest*/};
/* TheErrorCode when SCCP translate *//* GlobalTitle failure, as follows */ // 变量作用、含义/* 0 - SUCCESS 1 - GT Table error *//* 2 - GT error Others - no use */ // 变量取值范围/* onlyfunction SCCPTranslate() in *//* thismodual can modify it, and other *//* modulecan visit it through call *//* thefunction GetGTTransErrorCode() */ // 使用方法BYTEg_GTTranErrorCode;
注释与所描述内容进行同样的缩排。
避免在一行代码或表达式的中间插入注释。
在程序块的结束行右方加注释标记,以表明某程序块的结束。
if (...){// programcodewhile (index< MAX_INDEX){// programcode} /* end ofwhile (index < MAX_INDEX) */ // 指明该条while 语句结束} /* end ofif (...)*/ // 指明是哪条if 语句结束
/* …… */。标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k 作局部循环变量是允许的。
使用驼峰命名发来命名变量如 AddUser
除非必要,不要用数字或较奇怪的字符来定义标识符。
用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。
/*Wrong*/high<< 8 | lowa | b&& a & ca | b < c& d/*Right*/(high << 8) | low(a | b) && (a & c)(a | b) < (c & d)
涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
#defineTRUNK_IDLE 0#defineTRUNK_BUSY 1if(Trunk[index].trunk_state == TRUNK_IDLE){Trunk[index].trunk_state= TRUNK_BUSY;//program code}
/*Wrong*/rect.length = 10;char_poi = str;rect.width = 5;/*Right*/rect.length = 10;rect.width = 5; // 矩形的长与宽关系较密切,放在一起。char_poi = str;
/*Wrong*/#defineRECTANGLE_AREA( a, b ) (a) * (b)/*Right*/#defineRECTANGLE_AREA( a, b ) ((a) * (b))