[C++][程式設計風格]C++命名規則
http://www.cnblogs.com/jingmoxukong/articles/2167785.html
C++命名規範
常見命名法:
匈牙利命名法:基本原則是:變數名=屬性+型別+物件描述,其中每一物件的名稱都要求有明確含義,可以取物件名字全稱或名字的一部分。命名要基於容易記憶容易理解的原則。保證名字的連貫性是非常重要的。
Camel命名法:即駱駝式命名法,原因是採用該命名法的名稱看起來就像駱駝的駝峰一樣高低起伏。Camel命名法有兩種形式:混合使用大小寫字母和單詞之間加下劃線,例如runFast和run_fast都屬於Camel命名法。
Pascal命名法:與Camel命名法類似,不過Pascal命名法的首字母為大寫字母。
命名通則:
1、在所有命名中,都應使用標準的英文單詞或縮寫。不得使用拼音或拼音縮寫,除非該名字描述的是中文特有的內容,如半形、全形, 聲母、韻母等。
2、所有命名都應遵循望文知義原則,即名稱應含義清晰、明確。
3、所有命名都不易過長,應控制在規定的最大長度以內。
4、所有命名都應儘量使用全稱。
5、如果命名使用縮寫,則應該使用《通用縮寫表》(見附錄)中的縮寫;原則上不推薦使用《通用縮寫表》以外的縮寫,如果使用,則必須對其進行註釋和說明。
具體規範:
1、工程名:
不強制統一。
2、檔名:
·基於工程名,開頭3個字母應表明與哪一個工程相關。
·後面的字母應能夠區別不同的功能。
·不區分大小寫。
·長度不限於8.3格式,建議不多於30個字元。
·若檔案用於定義和實現類,建議檔名與類名保持一致。
3、函式名:
·參照 Windows API 的命名規範。
·推薦使用動賓結構。函式名應清晰反映函式的功能、用途。
·函式名最長不得超過30個字元。
·函式名第一個字母必須大寫。
·全域性函式必須以小寫字首"g"開頭。
4、變數名:
原則上,變數名的命名遵從匈牙利記法。即:字首 + 型別 + 變數名
1)格式:
[m_|s_|g_] type [class name|struct name] variable name
2)解釋:
·m_ : 類的成員變數
·ms_:類的靜態成員變數
·s_ :靜態全域性變數
·g_ :普通全域性變數
·型別縮寫(type)
·char, TCHAR: ch
·char[],TCHAR[]: sz
·string: str
·bool, BOOL: b
·int, __int16,__int32,__int64: n
·long: l
·double: d
·float: f
·BYTE: by
·WORD: w
·DWORD: dw
·unsigned: u
·function: fn
·p :pointer
·lp :long pointer
變數名最長不得超過20個字元。
5、類名:
·必須以大寫"C"開頭,後面字母反映具體含義,以清晰表達類的用途和功能為原則。
·介面必須以大寫"I"開頭,代表 Interface 。
·當名稱由多個單詞構成時,每一個單詞的第一個字母必須大寫。
6、結構體名、巨集名、列舉名、聯合名:
·全部大寫。
·列舉名加小寫字首"enum"。
例:
typedef enum _CFILE_OPEN_MODE
{
enumOPEN_READONLY = 0,
enumOPEN_READWRITE = 1,
enumCREATE_ALWAY = 3
} CFILE_OPEN_MODE;
//·巨集名加小寫字首"def"。
例:
#define defMAXNUMBER 100
·結構名加小寫字首"tag",之後必須以大寫"C"開頭。
例:
typedef struct tagKPOINT
{
int x;
int y;
} KPOINT;
//·聯合名加小寫字首"uni"。
例:
typedef union _VARIANT{
char unichVal;
int uninVal;
long unilVal;
float uniftVal;
...
} VARIANT;
C/C++原始碼書寫規範(試行)
1. 在.h/.cpp的開頭應有一段格式統一的說明,內容包括:
a. 檔名 (FileName);
b. 簡短說明檔案功能、用途 (Comment);
c. 建立人 (Creater);
d. 檔案建立時間 (Date)。
例:
/*! *@file *@brief *@author *@date */ |
2. 除非極其簡單,否則對函式應有註釋說明。內容包括:功能、入口/出口引數,必要時還可有備註或補充說明。
3. 每行程式碼的長度推薦為80列,最長不得超過120列;折行以對齊為準。
例:
HANDLE CSOpenFile( const char cszFileName[],<br>
int nMode); |
或者:
BOOL CSReadFile(<br>
HANDLE hFile,<br>
void *pvBuffer,<br>
int nReadSize,<br>
int *pnReadSize<br> );<br> |
4. 迴圈、分支程式碼,判斷條件與執行程式碼不得在同一行上。
例:正確:
if (n == -2) n = 1; else n = 2; |
不得寫做:
if (n == -2) n = 1; else n = 2; |
5. 指標的定義,* 號既可以緊接型別,也可以在變數名之前。
例:可寫做:int* pnsize;
也可寫做:int *pnsize;
但不得寫做:int * pnsize;
6. 在類的成員函式內呼叫非成員函式時,在非成員函式名前必須加上“::”。
7. 函式入口引數有預設值時,應註釋說明。
例:
BOOL KSSaveToFile( const char cszFileName[], BOOL bCanReplace
/* = TRUE */ ); |
或者:
BOOL KSSaveToFile( const char cszFileName[], BOOL bCanReplace
// = TRUE ); |
8. else if 必須寫在一行。
9. 與‘{’、‘}’有關的各項規定:
9.1‘{’、‘}’應獨佔一行。在該行內可有註釋。
例:正確:
for (i = 0; i < cbLine; i++) { // ..... printf ( "Line
%d:" , i); printf ( "%s\n" ,
pFileLines); } |
不得寫做:
for (i = 0; i < cb; i++) { printf ( "Line %d:" ,
i);<br> printf ( "%s\n" ,
pFileLines);} |
9.2‘{’必須另起一行,‘{’之後的程式碼必須縮排一個Tab。‘{’與‘}’必須在同一列上。
例:正確:
if (i > 0) {<br> m = 1;<br> n++; } |
不得寫做:
if (i > 0) { m = 1; n++; } |
例外:
if (i == 0) { ASSERT(FALSE); return ; } |
9.3 在迴圈、分支之後若只有一行程式碼,雖然可省略‘{’、‘}’,但不推薦這麼做。若省略後可能引起歧義,則必須加上‘{’、‘}’。
10. 與空格有關的各項規定。
10.1 在所有兩目、三目運算子的兩邊都必須有空格。在單目運算子兩端不必空格。但在‘->’、‘::’、‘.’、‘[’、‘]’等運算子前後,及‘&’(取地址)、‘*’(取值)等運算子之後不得有空格。
例:正確:
int n = 0, nTemp; for ( int i = nMinLine;
i <= nMaxLine; i++) |
不得寫做:
int n=0, nTemp; for (
int i=nMinLine; i<=nMaxLine; i++ ) |
10.2 for、while、if 等關鍵詞之後應有1個空格,再接‘(’,之後無空格;在結尾的‘)’前不得有空格。
例:正確:
if (-2 == n)
不得寫做:
if(-2 == n)
或
if ( -2 == n )
10.3 呼叫函式、巨集時,‘(’、‘)’前後不得有空格。
例:正確:
printf("%d\n", nIndex);
不得寫做:
printf ("%d\n", nIndex);
printf( "%d\n", nIndex );
10.4 型別強制轉換時,‘(’‘)’前後不得有空格
例:可寫做:
(KSFile*)pFile;
也可寫做:
(KSFile *)pFile
不得寫做:
( KSFile* )pFile
( KSFile * ) pFile
11. 與縮排有關的各項規定
11.1 縮排以 Tab 為單位。1 個 Tab 為 4 個空格
11.2 下列情況,程式碼縮排一個 Tab:
1. 函式體相對函式名及‘{’、‘}’。
例:
int Power( int x) { return (x * x); } |
2. if、else、for、while、do 等之後的程式碼。
3. 一行之內寫不下,折行之後的程式碼,應在合理的位置進行折行。若有 + - * / 等運算子,則運算子應在上一行末尾,而不應在下一行的行首。
11.3 下列情況,不必縮排:switch 之後的 case、default。
例:
switch (nID) { case ID_PLAY: ...... break ; case ID_STOP: ...... break ; default : ...... break ; } |
相關文章
- Google C++程式設計風格指南(八):規則之例外GoC++程式設計
- Google C++ 程式設計風格指南:命名約定GoC++程式設計
- Google C++程式設計風格指南(五):命名約定GoC++程式設計
- Google C++程式設計風格指南GoC++程式設計
- Google C++ 程式設計風格指南:其他 C++ 特性GoC++程式設計
- Google C++程式設計風格指南(三):C++ 類GoC++程式設計
- Google C++ 程式設計風格指南:類GoC++程式設計
- Google C++ 程式設計風格指南:格式GoC++程式設計
- 高質量C/C++程式設計指南總結(三)—— 命名規則C++程式設計
- 高質量C++/C程式設計指南(第3章 命名規則) (轉)C++C程式程式設計
- Google C++ 程式設計風格指南:作用域GoC++程式設計
- Google C++ 程式設計風格指南:註釋GoC++程式設計
- Google C++程式設計風格指南(七):格式GoC++程式設計
- Google C++程式設計風格指南(二):作用域GoC++程式設計
- Google C++程式設計風格指南(六):程式碼註釋GoC++程式設計
- Google C++ 程式設計風格指南:標頭檔案GoC++程式設計
- Google C++程式設計風格指南(四):智慧指標和其他C++特性GoC++程式設計指標
- 5.Go變數 常量 變數命名規則 程式碼風格Go變數
- Google C++ 程式設計風格指南:來自 Google 的奇技GoC++程式設計
- 統一規範化程式碼的命名風格
- java程式設計規約----程式碼風格(一)Java程式設計
- 3.Go語言中常量,變數, 及其命名規則以及程式碼風格Go變數
- [C++]C風格、C++風格和C++11特性的執行緒池C++執行緒
- C++設計模式的原則C++設計模式
- [C++]C++程式設計例項C++程式設計
- Javascript程式設計風格JavaScript程式設計
- C++程式設計C++程式設計
- P2 C++ 程式設計正規化C++程式設計
- 淺談C++物理設計:設計原則C++
- 程式設計規則程式設計
- C++程式設計規範-101條規則準則與最佳實踐電子書pdf下載C++程式設計
- 統一規範化專案的命名風格
- 現代C++風格的新元素C++
- JavaScript 程式設計風格指南JavaScript程式設計
- 大規模C++程式設計 -- 基礎知識C++程式設計
- CSharp命名風格CSharp
- C++編碼命名規範 -- 目前應用C++
- 糟糕程式設計師的程式設計風格程式設計師