命名空间命名约定

Vin*_*cio 50 .net c# namespaces design-guidelines

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

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

coo*_*ird 63

命名空间命名指南:

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

CompanyName.TechnologyName[.Feature][.Design]

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

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

这不仅是微软的东西,也是Java中的东西.Java中的命名空间,称为"包",具有以下约定:

唯一包名称的前缀始终以全小写ASCII字母书写,应该是顶级域名之一,目前是com,edu,gov,mil,net,org,或者是英文双字母代码之一识别ISO标准3166,1981中规定的国家.

软件包名称的后续组件根据组织自己的内部命名约定而有所不同.此类约定可能指定某些目录名称组件是分区,部门,项目,计算机或登录名.

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

并使用包含默认的包名java.,javax.,com.sun.包一大禁忌.

  • @Sir Psycho:Coobird 是对的,但你也需要保持开放的心态,你不想要一个最终太深的命名空间。当我输入 3 '.' 后我开始担心 在命名空间名称中。 (3认同)

akj*_*shi 16

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

命名空间的名称

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

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

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

例如,Microsoft.WindowsMobile.DirectX.

  • 使用所有部分的完整示例是什么?Microsoft.WindowsMo​​bile.DirectX.Lines? (2认同)