【问题标题】:Properly assigning Namespaces (with ReSharper's suggestions)正确分配命名空间(使用 ReSharper 的建议)
【发布时间】:2010-11-03 16:48:33
【问题描述】:

假设我们在一个主命名空间为 MyNamespace 的项目中有以下 file 和 [folder] 结构:

  • [实体]
    • Article.cs
    • Category.cs
  • [接口]
    • IReviewable.cs
    • ISearchable.cs
  • Enumerations.cs

根据 ReSharper 的建议,ArticleCategory 类的命名空间应该是 MyNamespace.EntitiesIReviewableISearchable 的命名空间应该是 MyNamespace。接口Enumerations 类的命名空间应该是MyNamespace

这是因为 ReSharper 的建议基于文件夹结构,而其建议基于文件在结构中的位置。


您如何看待上述命名空间?您认为仅在其文件夹位置为类(接口等)实现名称空间是否正确?

或者你认为命名空间声明不应该仅仅依赖于文件夹结构?

就我个人而言,我会将上述所有文件放在一个 MyNamespace 下,因为它们都彼此相关。

【问题讨论】:

    标签: c# visual-studio namespaces resharper


    【解决方案1】:

    将文件组织在有意义的文件夹中并从该结构构建命名空间是一种很好的做法。 Java 多年来一直遵循该规则,并且效果很好。

    还请注意,当您有很多如上所述的子命名空间时,是时候考虑按照 Patrick 的建议进行分级了(嗯,你认识他吗?)

    http://codebetter.com/blogs/patricksmacchia/archive/2009/02/15/re-factoring-re-structuring-and-the-cost-of-levelizing.aspx

    【讨论】:

      【解决方案2】:

      请注意,ReSharper 会为项目中的每个文件夹添加一个“命名空间提供程序”属性。对于要用于组织但不参与命名空间的文件夹,您可以将该属性设置为 false。

      【讨论】:

      • 这是组织网站名称空间的绝佳机会。您的站点结构是固定的,您可以最终消除 App_code.SomeFolderName Resharper 命名空间建议。
      【解决方案3】:

      我认为 ReSharper 的建议很好。我认为将班级等分组,而不是他们所做的事情是错误的。

      类比是将文档分组到 Word、Excel 等子文件夹中,而不是按 Project 或其他一些功能分组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 2013-07-07
        相关资源
        最近更新 更多