对于那些编写可重用组件的人,如果您要扩展 .NET 框架的功能,您认为最佳实践是什么?
例如,我目前正在创建一个 Pop3 库,因为 .NET 中不存在该库。我是创建自定义命名空间还是使用System.Net.Mail
?
对于那些编写可重用组件的人,如果您要扩展 .NET 框架的功能,您认为最佳实践是什么?
例如,我目前正在创建一个 Pop3 库,因为 .NET 中不存在该库。我是创建自定义命名空间还是使用System.Net.Mail
?
从命名空间命名指南:
命名命名空间的一般规则是使用公司名称,后跟技术名称以及可选的功能和设计,如下所示。复制代码
CompanyName.TechnologyName[.Feature][.Design]
通常,开始将内容包含到框架或库的默认命名空间中是一种非常糟糕的做法。这可能会导致混淆,即新命名空间是现有库的一部分,而现有库是分发给每个人的框架的一部分,还是属于其他人添加的自定义框架的一部分。
此外,命名约定尝试通过具有唯一标识符(例如CompanyName
. 它还减少了新库来源方面的任何混淆和问题。
这不仅是微软的事情,Java 也是如此。Java 中的命名空间,称为“包”,具有以下约定:
唯一包名的前缀总是用全小写的ASCII字母写的,应该是顶级域名之一,目前是com、edu、gov、mil、net、org,或者是英文的两字母代码之一识别 ISO 标准 3166, 1981 中指定的国家/地区。
包名称的后续组成部分根据组织自己的内部命名约定而有所不同。这样的约定可能会指定某些目录名称组件是部门、部门、项目、机器或登录名。
所以,如果我有一个超级棒的软件,它可能在net.coobird.superawesomesoftware
包中。
并且使用包含默认java.
, javax.
,com.sun.
包的包名称是一个很大的禁忌。
另请查看以下 MSDN 文章,了解有关命名空间命名的指南
为命名空间选择的名称应表明命名空间中的类型提供的功能。例如,System.Net.Sockets 命名空间包含使开发人员能够使用套接字通过网络进行通信的类型。
命名空间名称的一般格式如下:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
例如,
Microsoft.WindowsMobile.DirectX
。