命名空间命名约定

时间:2009-05-28 02:07:44

标签: c# .net namespaces design-guidelines

对于那些编写可重用组件的人来说,如果扩展.NET框架的功能,您认为什么是最佳实践?

例如,我正在创建一个Pop3库,因为.NET中不存在。我是创建自定义命名空间还是使用System.Net.Mail

2 个答案:

答案 0 :(得分:62)

来自Namespace Naming Guidelines

  

命名命名空间的一般规则   是使用公司名称后跟   技术名称和可选的   功能和设计如下。复制   代码

     

CompanyName.TechnologyName[.Feature][.Design]

通常,将内容包含在框架或库的默认命名空间中是一种非常糟糕的做法。这可能会导致混淆,即新命名空间是否是现有库的一部分,该库是分发给每个人的框架的一部分,或者是由其他人添加的自定义框架的一部分。

此外,命名约定通过使用CompanyName等唯一标识符来尝试避免命名空间冲突。它还减少了新库的来源方面的任何混淆和问题。

这不仅是微软的事情,也是Java中的事情。 Java中的名称空间称为“包”,其中包含following convention

  

唯一包名称的前缀是   总是用全小写ASCII编写   信件应该是其中之一   顶级域名,目前为com,   edu,gov,mil,net,org,或者其中之一   英文双字母代码识别   ISO标准中规定的国家/地区   3166年,1981年。

     

包的后续组件   名称因a而异   组织自己的内部命名   约定。这些惯例可能会   指定某个目录名称   组成部门,部门,   项目,机器或登录名。

所以,如果我有一个非常棒的软件,它可能在net.coobird.superawesomesoftware包中。

使用包含默认java.javax.com.sun.软件包的软件包名称是一个很大的禁忌。

答案 1 :(得分:16)

另请参阅以下MSDN文章,了解有关命名命名空间的指南

  

Names of Namespaces

     

为命名空间选择的名称应指明所做的功能   可通过命名空间中的类型获得。例如,   System.Net.Sockets命名空间包含允许开发人员使用的类型   使用套接字通过网络进行通信。

     

命名空间名称的一般格式如下:

     

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

     

例如,Microsoft.WindowsMobile.DirectX