毫無疑問,每個(gè)獨(dú)立的工程都有一套自己的命名約定酪耳,不過仍然有一些通用的規(guī)則值得參考耘拇。
- 為系統(tǒng)用途保留以下劃線開頭或下劃線結(jié)尾的名字,并且這些名字不應(yīng)該被用在任何用戶自定義的名字中器净。大多數(shù)系統(tǒng)使用這些名字用于用戶不應(yīng) 該也不需知道的名字中。如果你一定要使用你自己私有的標(biāo)識(shí)符当凡,可以用標(biāo)識(shí)它們歸屬的包的字母作為開頭山害。
- #define定義的常量名字應(yīng)該全部大寫。
- Enum常量應(yīng)該大寫或全部大寫沿量。
- 函數(shù)名浪慌、typedef名,變量名以及結(jié)構(gòu)體朴则、聯(lián)合體與枚舉標(biāo)志的名字應(yīng)該用小寫字母权纤。
- 很多"宏函數(shù)"都是全部大寫的。一些宏(諸如getchar和putchar)使用小寫字母命名,這事因?yàn)樗麄兛赡鼙划?dāng)成函數(shù)使用汹想。只有在宏的行為類似一 個(gè)函數(shù)調(diào)用時(shí)才允許小寫命名的宏外邓,也就是說它們只對(duì)其參數(shù)進(jìn)行一次求值,并且不會(huì)給具名形式參數(shù)賦值古掏。有些時(shí)候我們無法編寫出一個(gè)具有函數(shù)行為的 宏损话,即使其參數(shù)也只是求值一次。
- 避免在同一情形下使用不同命名方式槽唾,比如foo和Foo丧枪。同樣避免foobar和foo_bar這種方式。需要考慮這樣所帶來的困惑庞萍。
- 同樣拧烦,避免使用看起來相似的名字。在很多終端以及打印設(shè)備上钝计,'I'屎篱、'1'和'l'非常相似。給變量命名為l特別糟糕葵蒂,因?yàn)樗雌饋硎窒癯A?1'。
通常重虑,全局名字(包括enum)應(yīng)該具有一個(gè)統(tǒng)一的前綴践付,通過該前綴名我們可以識(shí)別出這個(gè)名字歸屬于哪個(gè)模塊。全局變量可以選擇匯集在一個(gè)全局結(jié) 構(gòu)中缺厉。typedef的名字通常在結(jié)尾加一個(gè)'t'永高。
避免名字與各種標(biāo)準(zhǔn)庫(kù)中的名字沖突。一些系統(tǒng)可能包含一些你所不需要的庫(kù)提针。另外你的程序?qū)砟程旌芸赡芤惨獢U(kuò)展命爬。