【问题标题】:What is best thing to call your namespace in .Net在 .Net 中调用命名空间的最佳方法是什么
【发布时间】:2010-09-22 07:57:15
【问题描述】:

在过去,我总是将特定项目的命名空间与项目(和原则类)相同,例如:

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

然后,每当我调用该类时,它总是来自其他项目:

KeepAlive.KeepAlive()...

我现在开始认为这可能不是一个好主意,但我有点难以理解我的命名空间到底应该叫什么。其他人做什么?您的所有项目是否只有一个命名空间?

【问题讨论】:

    标签: c# .net namespaces package


    【解决方案1】:

    我用进入该命名空间的所有事物的通用描述符来命名我的命名空间。

    【讨论】:

      【解决方案2】:

      让一个类的名称与命名空间相同是一个坏主意 - 在我看来,在某些情况下引用正确的东西会变得非常棘手。

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

      【讨论】:

        【解决方案3】:

        我们有这个简单的方案:

          CompanyName.ProductName
        

        然后是应用层,例如

          CompanyName.ProductName.Data
          CompanyName.ProductName.Web
        

        等等

        内部按模块和/或功能划分,通常对应于文件夹

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

        等等

        顺便说一句:您可以在此处找到类似问题的答案:

        【讨论】:

        • 公司名称变更、合并或产品名称变更时会发生什么?如果您认为在这种情况下不值得更改它,为什么首先要在命名空间中引入不相关性?
        • 我使用了很多第三方程序集。我很碰巧他们中的大多数人在命名空间中使用他们的公司名称来避免它们之间的冲突。如果你改变你的产品名称,我相信还有更多的事情要做,你将不得不重构很多东西。
        【解决方案4】:

        CompanyName.ProductName.AreaOfSystem.SubAreaOfSystem

        切勿将它们与类同名。

        我们的领域包括:

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

        谨慎使用子区域,但在相关时使用:

        • Smartcard.Mifare
        • Smartcard.DESFire

        我们的与文件夹不对应,因为从逻辑上讲可能并非如此。为了简化解决方案资源管理器的导航,我们可能会在文件夹中分割某些位,但这并不一定意味着命名空间应该遵循文件夹结构。特别是如果文件夹中只有几个文件(类型很少的命名空间通常很愚蠢)。

        【讨论】:

          【解决方案5】:

          我喜欢 java 打包方式:com.stackoverflow.Data(或您公司的主域名)。
          这样你的命名空间就不会模棱两可了。

          【讨论】:

            【解决方案6】:

            我们坚持旧的

            uk.co.company.system.layer

            在我们使用大量 MS 服务器产品时,采用这种方式将冲突降至最低,这有助于概念分离。

            例如。

            uk.co.acme.biztalk.bizutils.

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-18
              • 1970-01-01
              • 2010-10-25
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多