程序集和DLL的命名
程序集是一個部署單元,同時還代表托管程序的身份,雖然程序集可以分布在一個或多個文件中,但一般一個程序集僅與一個DLL相對應。夸文件的程序集很少使用,Visual Studio也沒有支持他的內建。
命名空間與DLL和程序集是不同的概念,命名空間對開發人員來說是一組邏輯實體,而DLL和程序集則是用于打包和部署的一個單元。DLL可以包含多個命名空間,由于命名空間的組織方式與DLL不同,所以可以單獨設計,而不需要講兩者強制關聯。
要為程序集和DLL選擇具有代表性的名字,如System.Data,這樣很容易就知道它的大致功能。
考慮用<Company>.<Component>.dll的模式給DLL命名。其中<Component>可以包含多個圓點分隔的子句,如Microsoft.VisualBasic.dll Microsoft.VisualBasic.Vsa.dll。
命名空間的命名
命名空間模板:<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
要用公司的名稱作為命名空間的前綴。
要用穩定的、與版本無關的產品名稱作為命名空間的第二層。
不要根據公司的組織架構來決定命名空間的層次結構,因為公司內部組織經過一段時間之后可能會發生改變。要根據相關技術來組織和劃分命名空間的層次結構。
考慮適當的時候在命名空間中使用復數。如:System.Collections
不要用相同的名字給命名空間和類型命名。
命名空間與類名的沖突
不要引入太一般化的類型名,如Node、Element、Log及Message,這樣的名字很可能會在常見的場景中引起類型名的沖突,應該給一般化的類型名加上限定符(XmlNode、FormElement、...)。
對于不同的命名空間,有具體的規范來避免類型名沖突。命名空間的類型如下:
應用程序模型命名空間(application model namespace)
基礎設施命名空間(infrastructure namespace)
核心命名空間(core namespace)
技術命名空間組(technology namespace group)
不要在單個應用程序模型中為命名空間中的多個類型起相同的名字。
不要給類型起會與核心命名空間中的任何類型產生沖突的名字。如Stream很容易和System.IO.Stream沖突。
不要給類型會與同一技術中的其他類型產生沖突的名字。
不要在技術命名空間和應用程序模型命名空間的類型之間引入類型名沖突(除非兩者不打算一起使用)。
類、結構和接口的命名
要用名詞或名詞短語來給類和結構命名。如果無法找到一個名詞或名詞短語,那就應該重新考慮該類型的總體設計;另一種選擇類型名字的方法是通過場景的角度。
要用形容詞短語來命名接口,在少數情況下也可以用名詞或名詞短語。
不要給類名加上符號“C”作為前綴。
要讓接口的名字已字母“I”開頭,這樣可以顯示出該類型是一個接口。
泛型類型參數的命名
要用描述性的名字來命名泛型類型參數,除非一個字母就能說明含義就無需使用描述性的名字,如List<T>、Convert<TInput,TOutput>。
考慮用單個字母“T”來命名參數類型,如果類型只有一個類型參數且類型參數只有一個字母。
要給描述性的類型參數名加上“T”前綴。
考慮在類型參數名中顯示出施加于該類型參數上的約束。
常用的類型命名
如果要從.NET框架中所包含的類型派生新的類型,或者實現.NET框架中的類型,那么應該遵循下表中的規范。
枚舉類型的命名
要用單數名詞來命名枚舉類型,除非它表示的是位域(bit field),即位域要用復數名詞來命名。
1 public enum ConsoleColor { 2 Black, 3 Blue, 4 Red 5 //... 6 } 7 8 [Flags] 9 public enum ConsoleModifiers { 10 Alt, 11 Control, 12 Shift 13 }
類型成員的命名
方法的命名
要用動詞或動詞短語來命名方法。
屬性的命名
要用名詞、名詞短語或形容詞來命名屬性
要用描述集合中項目短語的復數形式來命名集合屬性,而不要使用短語的單數形式加“List”或“Collection”后綴。
要用肯定性的短語來命名布爾屬性,可以選擇“Is”、“Can”、“Has”等前綴。
考慮用屬性的類型名來命名屬性
1 public enum Color{/*...*/} 2 3 public class Control { 4 public Color Color { get; set; } 5 }
事件的命名
要用動詞或動詞短語來命名事件。
要用現在時和過去時來賦予事件名以之前和之后的概念。如Colse事件的Colosing(關閉前)、Colsed(關閉后)。
要在命名事件處理函數(用作事件的委托)時加上“EventHandler”后綴。
要在事件處理函數中用sender和e作為兩個參數的名字。
字段的命名
要用名詞、名詞短語或形容詞來命名字段。
不要給字段(靜態共有字段和靜態受保護字段)名加前綴,但是大家都喜歡給私有字段加上“_”前綴。
對于靜態共有字段和靜態受保護字段命名時要用算駝峰風(PascalCasing)格。
參數的命名
要使用描述性的參數名。
考慮根據參數的意思而不是參數的類型來命名參數。
重載操作符的參數命名
要使用left和right來命名重載二元操作符的參數。
要用value來命名重載一元操作符的參數。
考慮使用有意義的名字來命名重載操作符的參數。
不要在命名重載操作符的參數時,使用縮寫或數字編號。
資源的命名
本地資源就好比是屬性,所以命名方式與屬性的命名規范相似。
要在命名資源鍵(resource key)時使用PascalCasing大小寫風格。
要使標識符的名字具有描述性,而不是注重簡潔性。
資源名一般是有字母、數字、下劃線組成。(有時候我也會用中文,但不知道會不會有字符編碼的問題)
文章列表