直播中
變量
命名
CString
SzString
char
CmyChar
char*
PmyChar
Long
LMyVariable
LPCSTR
LpStr
Int
NMyNumber
在最近發(fā)布的.NET和它的編程語言中,微軟更換了他的這一法則。如果你用過Delphi編程,你會看到新的法則與Delphi(Pascal)有些相似。
為避免代碼沖突(這樣做也會讓你的代碼更為通用),就要使用命名法則,這是一個很好的編程習慣。好啦,這里介紹一些常用的法則。
◆命名變量、方法、以及屬性
變量、方法和屬性的名稱的第一個字母應該大寫,并且名稱應該能表達出它們的用途(或者說是意義)。
變量
.NET 命名
匈牙利命名
描述
Cstring
EmployeeName
szName
Name of an employee.
Int
AttendanceCounter
nCounter
A counter of type long.
Long
NumberOfBytes
lBytes
A long type variable stores bytes.
有時我們習慣于在定義中使用下劃線 "_",例如: Add_Data(int a, int b). 按照新的命名法則,這不是一個好的編程習慣,雖然它并沒有錯。你應該將定義 Add_Data 改為 AddData。 這不是微軟的標準,你也不是必須按照這些法則。但是,在一些地方你會明白下邊這些法則的合理性。
就我個人而言,我更喜歡匈牙利命名法。當然,變量也使用同樣的法則。如果你記得匈牙利命名法的話,一個布爾型的變量定義以"b"打頭,比如:
BOOL bFlag = TRUE;
新的法則不推薦使用Flag 和 "b":
bool IsFileFound = true;
你可以瀏覽一下MSDN,那里邊有更多有關新的法則的說明。
◆命名組件以及集合(Assemblies)
為避免代碼沖突, 按照命名法則給你的庫(在 .NET 中稱為assembly)命名是一個良好的編程習慣。假定你是MindCracker 公司的,你在開發(fā)一個用于擴充C# database 類的庫, 把它的名字命名為MindCracker.DatabaseAssembly.ADOSet 要比MyAssembly.Database.ADOSet好的多。
再假定你的庫有一個方法,它是從表中讀取數(shù)據(jù),并返回一個數(shù)據(jù)集。你如果取名為 DataSet return_data()的話,改為DataSet ReturnData()好啦.
你還應該在命名中遵循一個統(tǒng)一的單詞順序。例如,你有倆個表,分別為Employee 和 Manager ,并且你還為它們分別定義了一個向表里邊插入一條記錄的方法, 那么方法名AppendEmployee 和 AppendManager 要比AppendEmployee 和 ManagerAppend要好。
◆循環(huán)
循環(huán)或者是其它塊兒結構應該對齊左右大括號,就像下邊這樣:
for (i = 0; i < 100; i++)
{
...
}
或者
for (i = 0; i < 100; i++){
...
}
我更喜歡的二種方法,因為很容易清楚一個塊兒結構和嵌套塊兒結構。
◆匈牙利命名法(efoxxx附)
匈牙利命名法是一名匈牙利程序員發(fā)明的,而且他在微軟工作了多年。此命名法就是通過微軟的各種產(chǎn)品和文檔傳出來的。多數(shù)有經(jīng)驗的程序員,不管他們用的是哪門兒語言,都或多或少在使用它
這種命名法的基本原則是:
變量名=屬性+類型+對象描述
即一個變量名是由三部分信息組成,這樣,程序員很容易理解變量的類型、用途,而且便于記憶。
下邊是一些推薦使用的規(guī)則例子,你可以挑選使用,也可以根據(jù)個人喜好作些修改再用之。
⑴屬性部分:
全局變量: g_
常量 : c_
類成員變量: m_
⑵類型部分:
指針: p
句柄: h
布爾型: b
浮點型: f
無符號: u
⑶描述部分:
初始化: Init
臨時變量: Tmp
目的對象: Dst
源對象: Src
窗口: Wnd
下邊舉例說明:
hwnd: h表示句柄,wnd表示窗口,合起來為“窗口句柄”。
m_bFlag: m表示成員變量,b表示布爾,合起來為:“某個類的成員變量,布爾型,是一個狀態(tài)標志”。