2009年3月8日 星期日

程式語言中常用的命名法

CSS的命名:駱駝命名法,匈牙利命名法和帕斯卡命名法

駱駝式命令法:
正如它的名稱所表示的那樣,是指混合使用大小寫字母來構成變量和函數的名字。例如,下面是分別用駱駝式命名法和下劃線法命名的同一個函數:
程序代碼 程序代碼
printEmployeePaychecks();
print_employee_paychecks();

第一個函數名使用了駱駝式命名法,函數名中的每一個邏輯斷點都有一個大寫字母來標記;第二個函數名使用了下劃線法,函數名中的每一個邏輯斷點都有一個下劃線來標記。

駱駝式命名法近年來越來越流行了,在許多新的函數庫和Microsoft Windows這樣的環境中,它使用得當相多。另一方面,下劃線法是c出現後開始流行起來的,在許多舊的程序和UNIX這樣的環境中,它的使用非常普遍。

匈牙利命名法:
廣泛應用於象Microsoft Windows這樣的環境中。Windows 編程中用到的變量(還包括宏)的命名規則匈牙利命名法,這種命名技術是由一位能幹的 Microsoft 程序員查爾斯- 西蒙尼(Charles Simonyi) 提出的。

匈 牙利命名法通過在變量名前面加上相應的小寫字母的符號標識作為前綴,標識出變量的作用域,類型等。這些符號可以多個同時使用,順序是先m_(成員變量), 再指針,再簡單數據類型,再其它。

例如:m_lpszStr, 表示指向一個以0字符結尾的字符串的長指針成員變量。

匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為前綴;前綴之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變量的用途。

帕斯卡(pascal)命名法:
與駱駝命名法類似。只不過駱駝命名法是首字母小寫,而帕斯卡命名法是首字母大寫,如:
程序代碼 程序代碼
DisplayInfo();
string UserName;

二者都是採用了帕斯卡命名法。在C#中,以帕斯卡命名法和駱駝命名法居多。

簡單的說
引用內容 引用內容
MyData 就是一個帕斯卡命名的示例
而myData是一個駱駝命名法,它第一個單詞的第一個字母小寫,後面的單詞首字母大寫,看起來像一個駱駝
而iMyData是一個匈牙利命名法,它的小寫的i說明了它的型態,後面的和帕斯卡命名相同,指示了該變量的用途.



匈牙利命名法

有關匈牙利命名法的一點有意思的說明是它的名字的由來。這種命名技術是由一位能幹的 Microsoft 程式員查爾斯·西蒙尼(Charles Simonyi) 提出的,他出生在匈牙利。在 Microsoft 公司中和他一起工作的人被教會使用這種約定。這對他們來說一切都很正常。但對那些 Simonyi 領導的項目組之外的人來說卻感到很奇特,他們認為這是死板的表達方式,甚至說代有這樣奇怪的外觀是因為它是用匈牙利文寫的。從此這種命名方式就被叫做匈牙 利命名法。匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為字首;字首之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變數的用途。

匈牙利命名法中常用的小寫字母的字首


但 是在任何情況下,都硬性規定使用匈牙利命名法是迂腐的。尤其是 Unix 程式設計,在使用沒有變數名、關鍵字自動補齊功能的編輯器,如 vi 下,去敲入大小寫混合的變數名是痛苦的。其實只要注意兩個原則:1) 含義清晰,不易混淆; 2) 不和其它模組、系統API的命名空間相衝突即可。

1.有意義的為變數名、巨集名加上本模組的關鍵字,就不至於和其它模組、系統API的命名空間相衝突;例如: 巨集的名稱過短,如:DEBUG; 或_DEBUG,很可能和別的模組,系統模組相衝突;
2.局部變數尤其是循環變數外,使用約定俗成的 i,j,k ,沒有問題;
3.巨集、常數、列舉enum,全部用大寫字母;
4.全域變數加上字首 "g",後面跟上首字母大寫的單詞;