C++變量命名規則

參考:Google C++編碼規範
參考:http://blog.sina.com.cn/s/blog_8a7012cf01017h9p.html

最重要的一致性規則是命名管理,命名風格直接可以直接確定命名實體是:類型、變量、函數、常量、宏等等,無需查找實體聲明,我們大腦中的模式匹配引擎依賴於這些命名規則。 命名規則具有一定隨意性,但相比按個人喜好命名,一致性更重要,所以不管你怎麼想,規則總歸是規則。

函數命名、變量命名、文件命名應具有描述性,不要過度縮寫,類型和變量應該是名詞,函數名可以用“命令性”動詞。

如何命名: 儘可能給出描述性名稱,不要節約空間,讓別人很快理解你的代碼更重要,好的命名選擇:
int num_errors; // Good.
int num_completed_connections; // Good.

醜陋的命名使用模糊的縮寫或隨意的字符:
int n; // Bad - meaningless.
int nerr; // Bad - ambiguous abbreviation.
int n_comp_conns; // Bad - ambiguous abbreviation.

類型和變量名一般爲名詞:如
FileOpener、num_errors。

函數名通常是指令性的,如
OpenFile()、set_num_errors(),
訪問函數需要描述的更細緻,要與其訪問的變量相吻合。

縮寫: 除非放到項目外也非常明瞭,否則不要使用縮寫,例如:
// Good
// These show proper names with no abbreviations.
int num_dns_connections; // Most people know what “DNS” stands for.
int price_count_reader; // OK, price count. Makes sense.

// Bad!
// Abbreviations can be confusing or ambiguous outside a small group.
int wgc_connections; // Only your group knows what this stands for.
int pc_reader; // Lots of things can be abbreviated “pc”.

不要用省略字母的縮寫:
int error_count; // Good.
int error_cnt; // Bad

序號 名稱 命名舉例 解釋
1 文件名 my_useful_class.cpp 全小寫,帶下劃線
2 命名空間 google_awesome_project 全小寫,帶下劃線,目錄命名
3 變量名 chbuf 類型前綴開頭,全小寫,帶下劃線
4 成員變量 m_bok m_開頭,後同變量
5 全局變量 g_strbuf g_開頭,後同變量
6 類名 MyExcitingClass 大寫開頭,無下劃線,單詞首字母大寫
7 常量名 kDaysInAWeek k開頭,後同類名
8 函數名 AddTableEntry() 動詞開頭,後同類名
9 枚舉 emWeek em開頭,後同類名;變量全大寫

1、文件命名(File Names)
文件名要全部小寫,可以包含下劃線(_)或短線(-),按項目約定來。

可接受的文件命名:
my_useful_class.cc
my-useful-class.cc
myusefulclass.cc

2、類型命名(Type Names)
類型命名每個單詞以大寫字母開頭,不包含下劃線:
MyExcitingClass、MyExcitingEnum。
所有類型命名——類、結構體、類型定義(typedef)、枚舉——使用相同約定,例如:

// classes and structs
class UrlTable { …
class UrlTableTester { …
struct UrlTableProperties { …

// enums
enum UrlTableErrors { …

3、變量命名(Variable Names)
變量名一律小寫,單詞間以下劃線相連,類的成員變量以下劃線結尾

4、常量命名(Constant Names)
在名稱前加k:kDaysInAWeek。 所有編譯時常量(無論是局部的、全局的還是類中的)和其他變量保持些許區別,k後接大寫字母開頭的單詞: const int kDaysInAWeek = 7;

5、 函數命名(Function Names)
普通函數(regular functions,譯者注,這裏與訪問函數等特殊函數相對)大小寫混合,存取函數(accessors and mutators)則要求與變量名匹配:MyExcitingFunction()、MyExcitingMethod()、my_exciting_member_variable()、set_my_exciting_member_variable()。
普通函數: 函數名以大寫字母開頭,每個單詞首字母大寫,沒有下劃線: AddTableEntry() DeleteUrl()

6、命名空間(Namespace Names)
命名空間的名稱是全小寫的,其命名基於項目名稱和目錄結構:
google_awesome_project。

7、枚舉命名(Enumerator Names)
枚舉值應全部大寫,單詞間以下劃線相連:MY_EXCITING_ENUM_VALUE。
枚舉名稱屬於類型,因此大小寫混合:UrlTableErrors。
enum UrlTableErrors {
OK = 0, ERROR_OUT_OF_MEMORY, ERROR_MALFORMED_INPUT,
};

類型 舉例 解釋
1、 整型前綴
int nId; //int前綴 n
short sId; //short前綴:s
unsigned int unId // unsigned int 前綴:un
long lId; //long前綴:l
2、 浮點型前綴
float fValue; //float前綴:f
double dValue; //double前綴:d
3、 字符型前綴
char chChar; //char前綴:ch
4、 字符串前綴
char szPath; //char字符串前綴:sz
string strPath; //string字符串前綴:str
CString strPath; //MFC CString類前綴:str
5、 布爾型前綴
bool bIsOK; //bool類型前綴:b
6、 指針型前綴
char * pPath; //指針前綴:p
7、 數組前綴
int arrnNum; //數組前綴:arr
String arrstrName; //數組前綴+類型前綴+名稱
8、 結構體前綴
STUDENT tXiaoZhang; //結構體前綴:t
9、 枚舉前綴
enum emWeek; //枚舉前綴:em
10、 STL容器前綴
vector vecValue; //vector容器前綴:vec
發佈了88 篇原創文章 · 獲贊 19 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章