命名空間的名稱
注意
此內容是由 Pearson Education, Inc. 授權轉載自架構設計指導方針:可重複使用 .NET 程式庫的慣例、慣用語和模式,第 2 版。 該版於 2008 年出版,該書自那以後已於第三版進行了全面修訂。 此頁面上的某些資訊可能已過期。
如同其他命名指導方針,為命名空間命名的目標,是要讓使用架構的程式設計人員清楚地立即知道命名空間的內容可能是什麼。 下列範本會指定為命名空間命名的一般規則:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
以下是一些範例:
Fabrikam.Math
Litware.Security
✔️ 在命名空間名稱加上公司名稱的前置詞,以防止來自不同公司的命名空間具有相同名稱。
✔️ 在命名空間名稱的第二層使用穩定且與版本無關的產品名稱。
❌ 請勿使用組織階層作為命名空間階層中名稱的基礎,因為公司內的群組名稱通常是短期的。 在相關技術群組周圍組織命名空間階層。
✔️ 搭配句點使用 PascalCasing 和個別命名空間元件 (例如 Microsoft.Office.PowerPoint
)。 如果您的品牌採用非傳統大小寫,您應該遵循品牌所定義的大小寫,即使其與一般命名空間大小寫不同也一樣。
✔️ 請考慮適當地使用複數命名空間名稱。
例如,使用 System.Collections
而不是 System.Collection
。 不過,品牌名稱和縮略字是此規則的例外。 例如,使用 System.IO
而不是 System.IOs
。
❌ 請勿針對命名空間和該命名空間中的型別使用相同的名稱。
例如,請勿使用 Debug
作為命名空間名稱,然後又在相同命名空間中提供名為 Debug
的類別。 數個編譯器需要這類型別才能完整。
命名空間和型別名稱衝突
❌ 請勿引進泛型型別名稱,例如 Element
、Node
、Log
和 Message
。
這樣做有很高的機率會導致常見案例中的型別名稱衝突。 您應該限定泛型型別名稱 (FormElement
、XmlNode
、EventLog
、SoapMessage
)。
有特定指導方針可避免不同命名空間類別的型別名稱衝突。
應用程式模型命名空間
屬於單一應用程式模型的命名空間通常會一起使用,但幾乎永遠不會與其他應用程式模型的命名空間搭配使用。 例如,System.Windows.Forms 命名空間很少與 System.Web.UI 命名空間搭配使用。 以下是已知應用程式模型命名空間群組的清單:
System.Windows*
System.Web.UI*
❌ 請勿為單一應用程式模型內命名空間中的型別提供相同的名稱。
例如,請勿將名為
Page
的型別新增至 System.Web.UI.Adapters 命名空間,因為 System.Web.UI 命名空間已經包含名為Page
的型別。基礎結構命名空間
此群組包含很少在常見應用程式開發期間匯入的命名空間。 例如,開發程式設計工具時,主要會使用
.Design
命名空間。 避免與這些命名空間中的型別衝突並不重要。核心命名空間
核心命名空間包含所有
System
命名空間,不包括應用程式模型命名空間和基礎結構命名空間。 核心命名空間包括System
、System.IO
、System.Xml
和System.Net
。❌ 請勿提供與核心命名空間中任何型別衝突的型別名稱。
例如,絕對不要使用
Stream
作為型別名稱。 其會與 System.IO.Stream 衝突,這是非常常用的型別。技術命名空間群組
此類別包含具有相同前兩個命名空間節點
(<Company>.<Technology>*
) 的所有命名空間,例如Microsoft.Build.Utilities
和Microsoft.Build.Tasks
。 屬於單一技術的型別彼此不衝突相當重要。❌ 請勿指派與單一技術內其他型別衝突的型別名稱。
❌ 請勿在技術命名空間與應用程式模型命名空間中的型別之間引進型別名稱衝突 (除非技術不適合與應用程式模型搭配使用)。
Portions © 2005, 2009 Microsoft Corporation. 著作權所有,並保留一切權利。
獲 Pearson Education, Inc. 的授權再版,從 Krzysztof Cwalina 和 Brad Abrams 撰寫,並在 2008 年 10 月 22 日由 Addison-Wesley Professional 出版,作為 Microsoft Windows Development Series 一部份的 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 節錄。