認為一個好的命名規範會給程式的閱讀者一個好的享受!
名稱空間的命名
命名名稱空間的一般規則如下:
CompanyName.TechnologyName
這樣,我們看到的名稱空間應該是這樣的:
Microsoft.Office
PowerSoft.PowerBuilder
注意:這隻是一個原則。第三方公司可以選擇其它的名字。
避免用公司名稱或其它著名品牌的名稱作為名稱空間的首碼,這樣會造成兩個公布的名稱空間有同一個名稱的可能性。
例如: 將微軟提供的Office自動類命名為Microsoft.Office
使用Pascal大寫方式,用逗號分隔邏輯成分。
例如:Microsoft.Office.PowerPoint
如果你的品牌使用的是非傳統大寫方式,那麼一定要遵循你的品牌所確定使用的大寫方式,即使這種方式背離了通常的名稱空間大寫規則。
例如:NeXT.WebObjects
ee.cummings
類和類成分的命名
類的命名原則是用名詞或名詞短語命名類,使用Pascal大寫。減少類名中縮寫的使用量。不要使用任何類首碼(比如C),不要使用帶底線的字元。
例如:public class FileStream {}
public class Button {}
public class String {}
變數的命名
名稱中各單詞首字母均為大寫。
例如:FindLastRecord
RedrawMyForm
在內部範圍中避免使用與外部範圍中的名稱相同的名稱。若訪問錯誤變數,則會產生錯誤結果。若變數與同一名稱的關鍵字衝突,則必須在關鍵字前加適當的類型庫以作標識。
例如:若有一個名為 date 的變數,只能通過調用 System.Date 來使用內部 Date 函數。
函數和方法的命名
函數和方法的命名應該以動詞開始,使用Pascal大寫。不要使用帶底線的字元。
例如:InitNameArray
CloseDialog
介面命名原則
使用名詞或名詞短語,或者描述行為的形容詞來命名介面,使用Pascal大寫。 減少介面名中縮寫的使用量,在介面名前加首碼I,以表示這個類型是一個介面。
例如: IComponent(描述性名詞)
ICustomAttributeProvider(名詞短語)
IPersistable(形容詞)
參數的命名
使用描述性參數名。參數名應該具有足夠的描述性,這樣在大多數情況下參數名和它的種類可以用來確定它的意思。根據參數的意思來具名引數,而不是根據參數的種類來命名。我們希望開發工具可以用很方便的方式提供關於參數種類的資訊,這樣參數名可以得到更好的使用,可以對語義而不是對種類進行描述。但是偶爾使用根據類型命名的參數名也是完全可以的。不要使用保留參數。如果在下一個版本中需要更多的資料,可以增加進來。
例如:Type GetType (string typeName)
string Format (string format, object [ ] args)
屬性的命名
用名詞或名詞短語命名屬性,屬性與類型要一樣。 用與一個類型的名稱相同的名字來命名屬性時,就使這個屬性的類型成為那個類型。雖然聽起來有些奇怪,但這是正確的。
例如:public enum Color {...}
public class Control {
public Color Color {get {...} set {...}}
}
事件的命名
用EventHandloer尾碼命名事件處理常式,使用名為sender和e的兩個參數,Sender參數代表提出事件的對象。Sender參數永遠是一個類型對象,即使它可能使用了更為特定的類型,與事件相關的狀態被封裝在一個名為e的事件類別範例中。要使用這個類型的正確的、特定的事件類別。
例如:public delegate void MouseEventHandler(object sender, MouseEvent e);
命名事件名時,需要有之前和之後的時態概念,因此要使用現在時態和過去時態(不要使用BeforeXxx\\AfterXxx的方式)。例如,可以被取消的結束事件就有Closing事件和Closed事件。
長項和常用項的命名
可使用縮寫使名稱長度適中,通常,多於 32 個字元的變數名在低解析度的監視器上難以閱讀。同時,請確保縮寫在整個應用程式中保持一致。
例如:可以使用“HTML”代替“HyperText Markup Language”。
代碼書寫格式規範
檔案之中不得存在無規則的空行,比如說連續十個空行。一般來講函數與函數之間的空行為2-3行。
在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。
每行長度盡量避免超過螢幕寬度,應不超過80個字元。
盡量用公用過程或子程式去代替重複的功能程式碼片段。
使用括弧清晰地表達算術運算式和邏輯運算式的運算順序。如將 x=a*b/c*d 寫成 x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
避免採用過於複雜的條件測試。
避免過多的迴圈嵌套和條件嵌套。
一個函數不要超過200行。一個檔案應避免超過2000行。
避免使用goto語句。
避免採用多指派陳述式,如x = y = z;。
代碼注釋規範
.cs檔案的注釋
所有.cs檔案開頭都要加上注釋,寫明檔案建立時間、作者、用途概述等
例如:
//********************************************************
//新增日期:2004.7.19
//作者:XXX
//內容說明: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
//********************************************************
函數過程注釋
所有的函數體開頭都要加上注釋,所以注釋使用.NET注釋規範。
例如:
/// <summary>
/// 建構函式
/// </summary>
/// <param >樣本參數1</param>
/// <param >樣本參數2</param>
public UpgradeThread(string is_xxx1, string is_xxx2)
{
//…
}
常量變數注釋
所有的常量變數,無論是全域還是局部使用的,凡是對代碼整體起到關鍵性做用的都需要加上注釋。
例如:
/// <summary>
/// 當前線程指向的備份檔案本地儲存路徑
/// </summary>
public string StorePath = '';
代碼修改注釋
當開發人員維護以前的程式碼時,需要在修改處的開始及結尾,加上自己的注釋資訊。
例如:
//BEGIN 2004-7-19 Jayson 修正了XXX問題
略…
//END 2004-7-19 Jayson