在.Net中,称呼命名空间的最佳方式是什么?

4

过去,我总是将特定项目的命名空间和项目(以及主要类)相同,例如:

namespace KeepAlive
{
    public partial class KeepAlive : ServiceBase
    {...

那么每当我从其他项目调用该类时,它始终是这样的:

KeepAlive.KeepAlive()...

我现在开始觉得这可能不是一个好主意,但我有点不知道该怎么称呼我的命名空间。其他人是怎么做的?你们是为所有项目都使用一个命名空间吗?

6个回答

7

将类的名称与命名空间相同并不是一个好主意-在某些情况下,它使得引用正确的内容变得非常棘手,我个人认为。

通常,我会为项目(和命名空间)命名一个适当的名称,然后在适当的位置使用“EntryPoint”或“Program”作为入口点。在您的示例中,我可能会将该类命名为“KeepAliveService”。


7
我们有这个简单的方案:
  CompanyName.ProductName

然后是应用层,例如:
  CompanyName.ProductName.Data
  CompanyName.ProductName.Web

在 IT 技术中,通常将代码按模块或功能分开,对应于不同的文件夹。

等等。

  CompanyName.ProductName.Web.Shop
  CompanyName.ProductName.Web.Newsletter

顺便提一下:您可以在以下地方找到类似问题的答案:

等等。


当公司名称更改、合并或产品名称更改时会发生什么?如果您认为在这种情况下不值得更改它,为什么要首先引入命名空间中的无关因素呢? - MatthewMartin
我正在使用许多第三方程序集。我非常高兴大多数程序集在命名空间中使用其公司名称以避免它们之间的冲突。如果您更改产品名称,我相信还有更多事情要做,您将不得不重构许多内容。 - splattne

5

公司名称.产品名称.系统领域.子系统领域

不要使用与类相同的名称。

我们的系统领域包括以下内容:

  • 服务
  • 智能卡
  • 用户界面

子系统领域只在相关时才使用:

  • 智能卡.Mifare
  • 智能卡.DESFire

命名空间不一定要与文件夹对应,因为从逻辑上讲,情况可能并非如此。为了方便解决方案资源管理器的导航,在某些区域中可能会按照文件夹进行分组,但这并不意味着命名空间应该遵循文件夹结构。特别是如果文件夹中只有少数文件,则使用带有较少类型的命名空间通常是不明智的。


3

我将我的命名空间命名为所有放入该命名空间的东西的通用描述符。


0
我喜欢Java包的方式:com.stackoverflow.Data(或者你公司的主域名)。这样,你的命名空间就不会有歧义了。

0

我们坚持老派的方式

uk.co.company.system.layer

这样我们可以使用较多的MS Server产品并帮助概念上的分离,从而将冲突降至最低。

例如:

uk.co.acme.biztalk.bizutils。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接