命名空间的名称
注意
此内容根据 Pearson Education, Inc. 许可转载自《框架设计指南:可重用 .NET 库的约定、习语和模式第二版》。 该版本于 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. 授权下,由 Addison-Wesley Professional 作为 Microsoft Windows 开发系列的一部分再版自 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition(Framework 设计准则:可重用 .NET 库的约定、惯例和模式第 2 版),由 Krzysztof Cwalina 和 Brad Abrams 发布于 2008 年 10 月 22 日。