1、相對獨立的程序塊之間、變量說明之後必須加空行;
if (!valid_ni(ni))
{
// program code
...
}
//空行
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
2、在switch語句中,每一個case分支和default要用{}括起來,{}中的內容需要縮進。
正例:
switch(iCode)
{
case1:
{
DoSomething();//縮進4格
break;
}
case2:
{ //每一個case分支和default要用{}括起來
DoOtherThing();
break;
}
}
3、一元操作符如“!”、“~”、“++”、“--”、“*”、“&”(地址運算符)等前後不加空格。“[]”、“.”、“->”這類操作符前後不加空格
!bValue
~iValue
++iCount
*strSource
&fSum
aiNumber[i]=5;
tBox.dWidth
tBox->dWidth
4、多元運算符和它們的操作數之間至少需要一個空格
正例:
fValue = fOldValue;
fTotal + fValue
iNumber += 2;
5、關鍵字之後要留空格
說明:if、for、while等關鍵字之後應留一個空格再跟左括號‘(’,以突出關鍵字
6、函數名之後不要留空格
說明:函數名後緊跟左括號‘(’,以與關鍵字區別。
7、‘(’向後緊跟,‘)’、‘,’、‘;’向前緊跟,緊跟處不留空格。‘,’之後要留空格。‘;’不是行結束符號時其後要留空格。
8、註釋符與註釋內容之間要用一個空格進行分隔
/* 註釋內容 */
// 註釋內容
9、相關的賦值語句等號對齊
正例:
tPDBRes.wHead = 0;
tPDBRes.wTail = wMaxNumOfPDB-1;
tPDBRes.wFree = wMaxNumOfPDB;
tPDBRes.wAddress = wPDBAddr;
tPDBRes.wSize = wPDBSize;
10、程序的分界符‘{’和‘}’應獨佔一行並且位於同一列,同時與引用它們的語句左對齊。{}之內的代碼塊使用縮進規則對齊;
說明:這樣使代碼便於閱讀,並且方便註釋。
do while語句和結構的類型化時可以例外,while條件和結構名可與 } 在同一行;
void Function(uint_8 ucVar)
{//獨佔一行並與引用語句左對齊
while(condition)
{
DoSomething();
}
}
11、if、else、elseif、for、while、do等語句自佔一行,執行語句不得緊跟其後。不論執行語句有多少都要加{};
說明:防止書寫失誤,也易於閱讀。
if (v1 < v2)
{
v1 = v2;
}
12、長表達式(超過80列)要在低優先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進行適當的縮進,使排版整齊;
說明:條件表達式的續行在第一個條件處對齊。
for循環語句的續行在初始化條件語句處對齊。函數調用和函數聲明的續行在第一個參數處對齊。賦值語句的續行應在賦值號處對齊。
if ((iFormat == CH_A_Format_M) &&
(iOfficeType == CH_BSC_M) &&
(aaaaa < bbbb))//條件表達式的續行在第一個條件處對齊
{
DoSomething();
}
for (long_initialization_statement;
long_condiction_statement;//for循環語句續行在初始化條件語句處對齊
long_update_statement)
{
DoSomething();
}
//函數聲明的續行在第一個參數處對齊
BYTEReportStatusCheckPara(HWNDhWnd,
BYTEucCallNo,
BYTEucStatusReportNo);
//賦值語句的續行應在賦值號處對齊
fTotalBill = fTotalBill+faCustomerPurchases[iID]
+ fSalesTax(faCustomerPurchases[iID]);
13、函數聲明時,類型與名稱不允許分行書寫
extern double FAR CalcArea(double dWidth, double
dHeight);
14、文件頭部必須進行註釋
說明:註釋必須列出:版權信息、文件標識、內容摘要、版本號、作者、完成日期、修改信息等。
下面是文件頭部的中文註釋:
/*********************************************************************
*版權所有(C)2001,XXX股份有限公司。*
*文件名稱://文件名
*文件標識://見配置管理計劃書
*內容摘要://簡要描述本文件的內容,包括主要模塊、函數及其功能的說明
*其它說明://其它內容的說明*當前版本://輸入當前版本*作者://輸入作者名字及單位
*完成日期://輸入完成日期,例:2000年2月25日
*修改記錄1://修改歷史記錄,包括修改日期、修改者及修改內容
*修改日期:*版本號:*修改人:*
修改內容:*修改記錄2:…
**********************************************************************/
下面是文件頭部的英文註釋:
/***********************************************************************
*Copyright(C)2011,XXXXXCorporation.*
*FileName://文件名(註釋對齊)*FileMark://見配置管理計劃書
*Description://簡要描述本文件的內容,完成的主要功能
*Others://其它內容的說明*Version://輸入當前版本*Author://輸入作者名字及單位
*Date://輸入完成日期,例:2001-12-12
*History1://修改歷史記錄,包括修改日期、 修改者及修改內容
*Date:*Version:*Author:*
Modification:*History2:…
**********************************************************************/
15、函數頭部應進行註釋,列出:函數的目的/功能、輸入參數輸出參數、返回值、訪問和修改的表、修改信息等。
說明:註釋必須列出:函數名稱、功能描述、輸入參數、輸出參數、返回值、修改信息等
下面是函數頭部的中文註釋:
/**********************************************************************
*函數名稱://函數名稱
*功能描述://函數功能、性能等的描述
*訪問的表://(可選)被訪問的表,此項僅對於有數據庫操作的程序
*修改的表://(可選)被修改的表,此項僅對於有數據庫操作的程序
*輸入參數://輸入參數說明,包括每個參數的作用、取值說明及參數間關係
*輸出參數://對輸出參數的說明。
*返回值://函數返回值的說明
*其它說明://其它說明
*修改日期版本號 修改人 修改內容
*-----------------------------------------------
*2002/08/01 V1.0 XXXX
***********************************************************************/
下面是函數頭部的英文註釋:
/**********************************************************************
*Function://函數名稱(註釋對齊)
*Description://函數功能、性能等的描述
*TableAccessed://(可選)被訪問的表,此項僅對於有數據庫操作的程序
*TableUpdated://(可選)被修改的表,此項僅對於有數據庫操作的程序
*Input://輸入參數說明,包括每個參數的作用、取值說明以及參數間關係
*Output://對輸出參數的說明*Return://函數返回值的說明
*Others://其它說明
*ModifyDateVersion Author Modification
*-----------------------------------------------
*2002/08/01 V1.0 XXXX
**********************************************************************/
16、包含在{}中代碼塊的結束處應加註釋,便於閱讀。特別是多分支、多重嵌套的條件語句或循環語句;
17、在表達式中使用括號,使表達式的運算順序更清晰
if (((iYear%4==0) && (iYear % 100 != 0)) || (iYear % 400 == 0))
18、在條件判斷語句中,當整型變量與0比較時,不可模仿布爾變量的風格,應當將整型變量用“==”或“!=”直接與0比較;
19、應當將指針變量用“==”或“!=”與NULL比較;
說明:指針變量的零值是“空”(記爲NULL),即使NULL的值與0相同,但是兩者意義不同
20、在switch語句中,每一個case分支必須使用break結尾,最後一個分支必須是default分支
說明:避免漏掉break語句造成程序錯誤。同時保持程序簡潔。
對於多個分支相同處理的情況可以共用一個break,但是要用註釋加以說明。