命名空间命名约定

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

例如,我正在创build一个Pop3库,因为它不存在于.NET中。 我是否创build一个自定义名称空间或者是否使用System.Net.Mail

从命名空间命名指南 :

名称空间命名的一般规则是使用公司名称,后跟技术名称以及可选的function和devise,如下所示。 复制代码

CompanyName.TechnologyName[.Feature][.Design]

一般来说,开始在框架或库的默认命名空间中包含东西是非常糟糕的做法。 这可能会导致混淆,因为新的命名空间是作为分发给所有人的框架的一部分的现有库的一部分,还是由其他人添加的自定义框架的一部分。

此外,命名约定通过具有唯一标识符(例如CompanyName来尝试避免命名空间冲突。 这也减less了新图书馆来源方面的混乱和问题。

这不仅是微软的事情,也是Java的事情。 Java中的命名空间被称为“包”,它具有以下约定 :

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

包名称的后续组件根据组织自己的内部命名约定而有所不同。 这样的约定可能会指定某些目录名称组件是分区,部门,项目,机器或login名称。

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

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

关于命名命名空间的指导,也请看下面的MSDN文章

命名空间的名称

为名称空间select的名称应指示名称空间中的types提供的function。 例如,System.Net.Sockets命名空间包含的types使开发人员能够使用套接字通过networking进行通信。

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

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

例如, Microsoft.WindowsMobile.DirectX