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