正确分配命名空间(使用ReSharper的建议)

时间:2009-06-17 14:52:10

标签: c# visual-studio namespaces resharper

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

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

根据ReSharper的建议,类ArticleCategory的命名空间应为 MyNamespace.Entities IReviewable和{{1}的命名空间应该是 MyNamespace.Interfaces ISearchable类的名称空间应该只是 MyNamespace

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


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

或者您认为名称空间声明不应仅仅依赖于文件夹结构吗?

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

3 个答案:

答案 0 :(得分:10)

我认为ReSharper的建议很好。我认为将课程等等分组是错误的,而不是他们的工作。

类比是将文档分组在子文件夹Word,Excel等中,而不是通过Project或其他功能分组。

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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

另请注意,当您拥有如上所述的大量子命名空间时,是时候考虑像Patrick建议的那样进行平衡(好吧,你认识他吗?)

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