一、匈牙利命名法
1 簡介
匈牙利命名法(Hungarian Notation),是由1972年至1981年在施樂公司工作的程序員查爾斯.西蒙尼(Charles.Simony),此人后來成為微軟的總設計師,因其祖籍是匈牙利,故有此名。
匈牙利命名法在國內之所以這么有名是因為當時微軟對其推崇備至。在上世紀90年代,MFC的出現影響了一代代程序員,而MFC中各種類的命名是以匈牙利命名法命名的,再加上當時微軟出了不錯的書《Windows程序設計》推波助瀾,而同時呢,國內UNIX編程風格氛圍不強,這種命名法幾乎成了國內變量命名法的標准。這就導致在現在的某些書籍或者項目中推薦使用匈牙利命名法
2 基本規則
匈牙利命名法的基本規則是:變量名=屬性+類型+對象描述,其中每一個對象的名稱都要求有明確含義,可以是對象名字全程或者一部分,同是要基於容易記憶理解的原則。
3 常用前綴
- 屬性部分
前 綴 | 類 型 | 前 綴 | 類 型 |
---|---|---|---|
全局變量 | g_ | 常量 | c_ |
類的成員變量 | m_ | 靜態變量 | s_ |
- 類型部分:類型值得是變量的類型,如整型、浮點型、字符串等。
前 綴 | 類 型 | 前 綴 | 類 型 |
---|---|---|---|
數組 | a | 長整型 | l |
指針 | p | 布爾型 | b |
函數 | fn | 浮點型 | f |
無效 | v | 雙字節 | dw |
句柄 | h | 字符串 | sz |
短整型 | n | 雙精度浮點型 | d |
計數 | cnt | 字符 | ch |
整型 | i | 字節 | by |
字節 | w | 無符號 | u |
- 描述部分:用來表示該變量描述的意義,即該變量所表示的含義。
前 綴 | 類 型 | 前 綴 | 類 型 |
---|---|---|---|
最大 | Max | 最小 | Min |
初始化 | Init | 臨時變量 | Temp |
源對象 | Src | 目的對象 | Dest |
4 例子
變量定義的這些描述符號可以多個同時使用,順序一般是m_,再指針,再簡單數據類型,再其它。
hwnd: h類型描述,表示句柄;wnd是變量的對象描述,表示窗口,所以hwnd表示窗口句柄。
pfnEatApple: pfn是類型描述,表示指向函數的指針;EatApple是變量對象描述,所以pfnEatApple表示指向EatApple函數的函數指針變量。
m_lpszStr: m_表示是成員變量;l表示長整型;p表示指針;sz表示的是字符串;Str是對象描述;所以m_lpszStr的含義就是表示指向一個字符串的長指針成員變量。
二、駝峰命名法(小駝峰法)
1 簡介
駝峰命名法是指混合使用大小寫字母來構成變量和函數的名字,是以單個單詞或多個單詞組成變量或者函數的唯一標識符時,第一個單詞以小寫字母開始,第二個單詞以及后面的每一個單詞的首字母大寫。
2 例子
下面是分別用駱駝式命名法和下划線法命名的同一個函數:
printEmployeePaychecks();使用了駱駝式命名法:函數名中的每一個邏輯斷點都有一個大寫字母來標記;
print_employee_paychecks();使用了下划線法:函數名中的每一個邏輯斷點都有一個下划線來標記。
三、帕斯卡命名法(大駝峰法)
1 簡介
帕斯卡(pascal)命名法與駱駝命名法類似。只不過駱駝命名法是首字母小寫,而帕斯卡命名法是首字母大寫
2 例子
public void DisplayInfo(); String UserName;
二者都是采用了帕斯卡命名法。在C#中,以帕斯卡命名法和駱駝命名法居多。
四、下划線命名法
所有字母均小寫,每個單詞間以下划線分割,樣子像 “nginx_vip”
m_iMyData是一個匈牙利命名法,m_表示它是成員變量,小寫的i說明了它是個整型,后面的和帕斯卡命名相同,指示了該變量的用途
myData是一個駱駝命名法,它第一個單詞的第一個字母小寫,后面的單詞首字母大寫,看起來像一個駱駝
MyData就是一個帕斯卡命名的示例
my_data是一個下划線命名的示例
五、下划線的使用(Python)
1 名稱前的單下划線(如:_name)
用於指定屬性和方法是“私有”的。但是Python不像Java一樣具有私有屬性、方法、類,在屬性和方法之前加單下划線,只是代表該屬性、方法、類只能在內部使用,是API中非公開的部分。如果用from import * 和 from import * 時,這些屬性、方法、類將不被導入。
class Persion: def init(self): self._name="小明"
2 名稱前的雙下划線(如:__name)
以雙下划線開頭的方法和屬性表示私有的方法和屬性(可以近似這么理解,不太准確)。
用於禁止外部訪問的類成員,不能用from xx import xx導入,只有類對象可以訪問
class Persion: def init(self): self.__name="小明"
3 開頭雙下划線和雙下划線結尾
特殊變量,特殊變量是可以直接訪問的,不是私有變量。Python內部調用的方法,一般不建議在程序中調用。
if __name__ == '__main__': print('我想輸出點什么')
六、Java命名規范
包名:多單詞組成時,所有字母都小寫:xxxyyyzzz。
類名、接口名:多單詞組成時,所有單詞的首字母大寫(大駝峰、帕斯卡命名法):XxxYyyZzz。
變量名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始的每一個單詞首字母大寫(小駝峰法):xxxYyyZzz
常量名:所有字母都大寫,多單詞時每個單詞用下划線連接:XXX_YYY_ZZZ
七、參考
命名方法:https://blog.csdn.net/bailang_zhizun/article/details/82699
命名方法:https://www.jianshu.com/p/a8d1e05c6d68
下划線使用:https://www.cnblogs.com/endmoon/p/9657838.html
下划線使用:https://www.cnblogs.com/lhrbest/p/10281563.html
原文鏈接:https://blog.csdn.net/See_Star/article/details/102624388