1、 程序块采用缩进风格编写,缩进为4个空格位。排版不混合使用空格和TAB键。规则2 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如-),后不应加空格。采用这种松散方式编写代码的目的是使代码更加清晰。例如:(1) 逗号、分号只在后面加空格printf(%d %d %d , a, b, c);(2)比较操作符, 赋值操作符=、 +=,算术操作符+、%,逻辑操作符&,位域操作符= MAX_TIME_VALUE)a = b + c;a *= 2;a = b 2;(3)!+-(地址运算符)等单目操作符前后不加空格*
2、pApple = a; / 内容操作*与内容之间flag = !bIsEmpty; / 非操作p = &cMem; / 地址操作 与内容之间i+; / ,(4)-.前后不加空格p-id = pId;指针前后不加空格由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如最内层的括号内侧(即左括号后面和右括号前面)不要加空格,因为在C/C+语言中括号已经是最清晰的标志了。另外,在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。最后,即使留空格,也不要连续留两个以上空格(为了保证缩进和排比留空除外)。规则3 函数体的开始,类的定义,结构的定义,i
3、f、for、do、while、switch及case语句中的程序都应采用缩进方式,憑捄蛻捰禀独占一行并且位于同一列,同时与引用它们的语句左对齐 例如下例不符合规范。for ( . ) . / 程序代码if ( . )void DoExam( void )应如下书写。for ( . )规则4 功能相对独立的程序块之间或for、if、do、while、switch等语句前后应加一空行。例如以下例子不符合规范。例一:if ( ! ValidNi( ni ) )nRepssnInd = SsnData index .nRepssnIndex ;nRepssnNi = SsnData index .ni
4、 ;例二:char *pContext;int nIndex;long lCounter;pContext = new (CString);if(pContext = NULL)return FALSE;应如下书写规则5 if、while、for、case、default、do等语句自占一行。示例:如下例子不符合规范。if(pUserCR = NULL) return;应如下书写:if( pUserCR = NULL )return;规则6 若语句较长(多于80字符),可分成多行写,划分出的新行要进行适应的缩进,使排版整齐,语句可读。memset(pData-pData + pData-nCo
5、unt, 0,(m_nMax - pData-nCount) * sizeof(LPVOID);CNoTrackObject* pValue =(CNoTrackObject*)_afxThreadData-GetThreadValue(m_nSlot);for ( i = 0, j = 0 ; ( i BufferKeyword WordIndex .nWordLength )& ( j 一行最多写一条语句。rect.length = 0 ; rect.width = 0 ;rect.length = width = 0;都应书写成:rect.width = 0 ;规则8 对结构成员赋值,等
6、号对齐。rect.top = 0;rect.left = 0;rect.right = 300;rect.bottom = 200;规则9 #define的各个字段对齐以下示例不符合规范#define MAX_TASK_NUMBER 100#define LEFT_X 10#define BOTTOM_Y 400应书写成:规则10 不同类型的操作符混合使用时,使用括号给出优先级。如本来是正确的代码:if( year % 4 = 0 | year % 100 != 0 & year % 400 = 0 )如果加上括号,则更清晰。if(year % 4) = 0 | (year % 100) !
7、(year % 400) = 0)2. 可理解性1.1 注释注释的原则是有助于对程序的阅读理解,注释不宜太多也不能太少,太少不利于代码理解,太多则会对阅读产生干扰,因此只在必要的地方才加注释,而且注释要准确、易懂、尽可能简洁。注释量一般控制在30%到50%之间。规则1 程序在必要的地方必须有注释,注释要准确、易懂、简洁。例如如下注释意义不大。/* 如果bReceiveFlag 为 TRUE */if ( bReceiveFlag = TRUE)而如下的注释则给出了额外有用的信息。/* 如果mtp 从连接处获得一个消息*/if ( bReceiveFlag = TURE) 注释应与其描述的代码相
8、近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。例子1/* 获得系统指针和网络指针的副本 */例子2/*获得系统指针和网络指针的副本 */ 对于所有的常量,变量,数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,在声明时都必须加以注释,说明其含义。/* 活动任务的数量 */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /*活动任务的数量 */* 带原始用户信息的SCCP接口 */enum SCCP_USER_PRIMITIVEN_UNITDATA_IND , /* 向SCCP用户报告单元数据已经到达 */N_UNITDATA_REQ , /* SCCP用户的单元数据发送请求 */ ; 头文件、源文件的头部,应进行注释。注释必须列出:文件名、作者、目的、功能、修改日志等。例如:/*文件名:编写者:编写日期:简要描述:修改记录:*/说明:摷蛞 枋鰯一项描述本文件的目的和功能等。撔薷募锹紨是修改日志列表,每条修改记录应包括修改日期、修改者及修改内容简述。规
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1