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