一個好的名字能夠讓你的程序更加好懂別人一看到這個名字就能夠猜到你在做什麼大量好的名字離不開好的命名規范而一個好的命名規范要做到兩點
l 合理即容易被大家接受和使用從這個意義上來說好的命名規范不應該太長它應該讓你花上分鐘就能看完寫過幾段代碼就能熟悉
l 風格一致即前後一致例外的情況少
符合以上兩點的命名規范就是好的雖然它們具體的規則可能不同有的時候命名規范體現了編程思想比如對於接口在NET中一般要求以I開頭在Java中沒有這個要求原因是Java認為接口和抽象類往往可以轉化比如在項目初期可能定義的是接口而在後面可能把它改成抽象類如果名稱一致就避免了名稱的改動
另外不同的命名規范也體現了程序發展歷程比如匈牙利命名法要求類型前綴故在C++VBPB一般都會大量出現類型前綴像intAmount strName等而現在一般沒有這個要求原因是)有些類型可能會做修改比如Int變成Int另外對於一些動態語言(Python JavaScript)來說其類型是變化的編譯時無法確定)現在的開發環境更加的友好即使在開發的時候你也很容易知道變量的類型(只要鼠標移上去)
本文的命名規范主要基於微軟的標准另外加上實際開發的一些具體經驗它還在不斷的維護和完善你可以針對不同項目的要求做相應的調整
命名樣式
樣式分類
名稱
解釋
適用環境
例子
Pascal 大小寫
首字母和後面的每個單詞的首字母都大寫其他字母小寫
BackColor
Camel 大小寫
首字母小寫而後面的每個單詞的首字母大寫其他字母小寫
backColor
大寫
所有字母都大寫
l 縮寫
l 少於等於個字符
SystemIO
SystemWebUI
樣式的選擇
標識符
命名格式
例子
備注
參數局部變量
Camel
public int GetTypeID(string typeName)
{ int typeID; … }
PrivateProtected的實例字段
Camel
private string redValue;
protected bool isOk;
界面控件
Camel
private Label lblAlarm;
縮寫
大寫
namespace SystemIO
{ … }
縮寫必須是被普遍接受眾所周知的縮寫
除上面的標識符外
Pascal
public SystemDrawingColor BackColor
{ … }
原則和習慣首要原則
有意義的描述性的詞語來命名能夠一眼看出它作什麼別使用會引起誤解的名字如果名字一目了然就無需用文檔來解釋方法的功能了
除約定俗成的別用縮寫用name address salary等代替 nam addr sal
除用於循環別使用單個字母的變量象i n x 等 而要使用 index temp等
for ( int i = i < count i++ ){ ……}其他習慣l除了界面控件外不要使用類型前綴比如使用名稱amount而不是 intAmount
l類使用名詞名詞短語命名比如public class FileStream
l方法使用動詞動詞短語開始比如CreateUser() RemoveAt()等
l接口以 I 開始後面加上名詞名詞短語形容詞命名比如IDisposable
l常量所有單詞大寫多個單詞之間用 _ 隔開public const string PAGE_TITLE = Welcome
l命名空間
基本格式
CompanyName/ProjectNameTechnologyName[Feature][Design]
a)CompanyName/ProjectName公司名項目名稱或產品名稱
b)TechnologyName穩定的公認的技術名稱或架構層次名稱
c)[Feature][Design]可選的功能與設計
例如
//微軟公司的Web開發中的UI中的Design
namespace MicrosoftWebUIDesign
//西門子報價項目中業務邏輯層中的項目管理
namespace SiemensQuotationBusinessRulesProjectManagement
幾個規則
a)嵌套的命名空間應當有依賴關系例如SystemWebUIDesign 中的類依賴於 SystemWebUI 中的類而不能相反
b)命名空間和類不能使用同樣的名字例如命名空間Debug下最好不要又一個類名為Debug
c)如果公司名項目名稱或產品名稱太長的話可以用縮寫(且全部大寫)
控件命名控件的名稱中需要加上前綴之所以這樣做是為了區分界面的控件和普通的對象由於界面修改往往非常頻繁區分開來能使你更快速的找到控件從而修改界面舉一個例子
界面有個TextBox個Label一個TextBox對應一個Label為了完成讀寫你至少要有條語句來從控件進行取賦值操作如果有前綴的話輸入thistxt你就幾乎馬上能找到這個控件反之如果沒有前綴由於窗口或頁面對象擁有大量的屬性和變量(> 個)你將花費大量時間來查找另外一個TextBox對應一個Label(一個代表值一個代表名稱)它們往往指同一樣事物如果有前綴就很容易區分這兩個控件
控件
前綴
備注
Label
lbl
比如lblName
TextBox
txt
Button
btn
CheckBox
chk
RadioButton
rdo
CheckBoxList
chklst
RadioButtonList
rdolst
ListBox
lst
DropDownList
ddl
DataGrid
dg
DataList
dl
Image
img
Table
tbl
Panel
pnl
LinkButton
lnkbtn
ImageButton
From:http://tw.wingwit.com/Article/program/net/201311/15419.html