《Google的C++編碼規(guī)范》閱讀隨筆 —— 第五章 命名約定

命名風(fēng)格直接可以確定命名實(shí)體是:類型谈火、變量糯耍、函數(shù)囊嘉、常量、宏等等舵鳞,無(wú)需查找實(shí)體聲明蜓堕,大腦中的模式匹配引擎依賴于這些命名規(guī)則虐块。

1.通用命名規(guī)則
函數(shù)命名嘉蕾、變量命名。文件命名都應(yīng)具有描述性儡率,不要過(guò)度縮寫挂据,類型和變量應(yīng)該是名詞崎逃,函數(shù)名可以用命令性動(dòng)詞

如何命名:
盡可能給出描述性名詞眉孩,讓人理解你的代碼浪汪。
類型和變量名一般為名詞,如FileOpener死遭,num_errors
函數(shù)名通常是指令性的,如OpenFile(),set_num_errors(),訪問(wèn)函數(shù)要與其訪問(wèn)的變量相吻合

2.文件命名
文件名要全部小寫钉迷,可以包含下劃線(_)或短線(-),按項(xiàng)目約定來(lái)
可接受的文件命名:
my_useful_class.c
my-useful-class.c
myusefulclass.c

不要用已經(jīng)存在與usr/include下的文件名(對(duì)UNIX钠署、Linux系統(tǒng)而言),如db.h
通常枷颊,盡量讓文件名更加明確该面,http_server_logs.h就比logs.h好隔缀,定義類文件名一般成對(duì)出現(xiàn),如foo_bar.h和foo_bar.c猾瘸,對(duì)應(yīng)類FooBar

內(nèi)聯(lián)函數(shù)必須放在h文件中,短的話直接放在h中淮悼,長(zhǎng)的話放到-inl.h結(jié)尾的文件中袜腥。對(duì)于包含大量?jī)?nèi)聯(lián)代碼的類钉汗,可以有三個(gè)文件:
url_table.h usr_table.c url_table-inl.h

3.類型命名
類型命名每個(gè)單詞以大寫字母開(kāi)頭鲤屡,不包含下劃線:MyExcitingClass酒来。

所有類型命名——類肪凛、結(jié)構(gòu)體、類型定義(typedef)衡奥、枚舉——使用相同約定远荠,如:
class UrlTable{...
struct UrlTableProperties{...
typedef hash_map<UrlTableProperties*, string> PropertiesMap;
enum UrlTableErrors{...

4.變量命名
變量名一律小寫,單詞間以下劃線相連档址,類的成員變量以下劃線結(jié)尾守伸,如my_exciting_local_variable、my_exciting_member_variable_尼摹。

結(jié)構(gòu)體的數(shù)據(jù)成員可以和普通變量一樣剂娄,不用像類那樣以下劃線結(jié)尾

全局變量沒(méi)有特別要求阅懦,少用就好,可以用g_會(huì)其他易與局部變量區(qū)分的標(biāo)志為前綴

5.常量命名
在名稱前加k:kDaysInAWeek惯吕。
所有編譯時(shí)常量(無(wú)論是局部的怕午、全局的還是類中的)和其他變量保持些許區(qū)別,k后接大寫字母開(kāi)頭的單詞堡距。
const int kDaysInAWeek = 7;

6.函數(shù)命名
普通函數(shù)大小寫混合吏颖,存取函數(shù)則要求與變量名匹配:MyExcitingFunction(),MyExcitingMethod(),my_exciting_member_varible,set_my_exciting_member_variable()恨樟。
普通函數(shù):函數(shù)名以大寫字母開(kāi)頭,每個(gè)單詞首字母大寫缩多,沒(méi)有下劃線
AddTableEntry(), DeleteUrl()

存取函數(shù):這里摘錄一個(gè)擁有實(shí)例變量num_entries_的類养晋。
class MyClass{
public:
int num_entries() const{ return num_entries_;}
void set_num_entries(int num_entries){num_entries_ = num_entries;}
private:
int num_entries_;
};
其他短小的內(nèi)聯(lián)函數(shù)也可以使用小寫字母,例如逊抡,在循環(huán)中調(diào)用這樣的函數(shù)甚至都不需要緩存其值零酪,小寫命名就可以接收。
注:從這一點(diǎn)上可以看出孝凌,小寫的函數(shù)名意味著可以直接內(nèi)聯(lián)使用月腋。

7.命名空間
命名空間的名稱全是小寫的榆骚,其命名基于項(xiàng)目名稱和目錄結(jié)構(gòu):google_awesome_project。
關(guān)于命名空間穆碎,參考第二篇命名空間

8.枚舉命名
枚舉值應(yīng)該全部大寫所禀,單詞間以下劃線相連:MY_EXCITING_ENUM_VALUE色徘。
枚舉名稱屬于類型,因此大小寫混合:UrlTableErrors褂策。

enum UrlTableErrors{
OK = 0,
ERROR_OUT_OF_MEMORY,
};

9.宏命名
參考第四篇預(yù)處理宏斤寂,其命名想枚舉命名一樣全部大寫、使用下劃線:

define ROUND(x) ...

define PI_ROUNDED 3.0

10.命名規(guī)則外
當(dāng)命名與現(xiàn)有C++實(shí)體相似的對(duì)象時(shí)罗侯,可參考現(xiàn)有命名約定:
bigopen()
函數(shù)名溪猿,參考o(jì)pen()
unit
typedef類型定義
bigpos
struct或class诊县,參考pos
sparse_hash_map
STL相似實(shí)體;參考STL命名約定
LONGLONG_MAX
常量避除,類似INT_MAX

總結(jié):
1)總體規(guī)則:不要隨意縮寫驹饺,出函數(shù)名可適當(dāng)為東此外缴渊,其他命名盡量使用清晰易懂的名詞
2)宏、枚舉等全部使用大寫 + 下劃線
3)變量(含類結(jié)構(gòu)體成員變量)蝌借、文件指蚁、命名空間凝化、存取函數(shù)等全部使用小寫+下劃線。類成員變量以下劃線結(jié)尾搓劫,全部變量以g_開(kāi)頭枪向。
4)普通函數(shù)、類型(含結(jié)構(gòu)體陨亡、枚舉類型)常量等使用大小寫混合,不含下劃線蛙埂。
5)參考現(xiàn)有或相近命名約定

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绣的,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子被辑,更是在濱河造成了極大的恐慌敬惦,老刑警劉巖谈山,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俄删,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奏路,警方通過(guò)查閱死者的電腦和手機(jī)畴椰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鸽粉,“玉大人斜脂,你說(shuō)我怎么就攤上這事〈セ” “怎么了帚戳?”我有些...
    開(kāi)封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)儡首。 經(jīng)常有香客問(wèn)我片任,道長(zhǎng),這世上最難降的妖魔是什么蔬胯? 我笑而不...
    開(kāi)封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮涝动,結(jié)果婚禮上靡菇,老公的妹妹穿的比我還像新娘厦凤。我一直安慰自己违柏,他們只是感情好漱竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布万矾。 她就那樣靜靜地躺著后添,像睡著了一般遇西。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梧税,一...
    開(kāi)封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天凳谦,我揣著相機(jī)與錄音尸执,去河邊找鬼绊诲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛世舰,可吹牛的內(nèi)容都是我干的跟压。 我是一名探鬼主播姊氓,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼禾唁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼丐枉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起弯院,我...
    開(kāi)封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤椅挣,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后澎胡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锈嫩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年河狐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馋艺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐祠。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡星岗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出靴寂,到底是詐尸還是另有隱情,我是刑警寧澤赞草,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布葬毫,位于F島的核電站,受9級(jí)特大地震影響箍镜,放射性物質(zhì)發(fā)生泄漏香缺。R本人自食惡果不足惜祸轮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一售貌、第九天 我趴在偏房一處隱蔽的房頂上張望恒削。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姜凄,已是汗流浹背申鱼。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工猴鲫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姻几,地道東北人豁陆。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓雄坪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迂求,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容