将我的类/接口安排/组织到文件夹中?不用文件夹更改名称空间(Resharper:Namespace Provider = false)

时间:2011-03-28 08:55:45

标签: .net resharper namespace-organisation

我目前有一个项目,每天都在增加规模。它是我提供的API的容器。

我目前在root中拥有所有类和所有接口。

我已将我的Enums,Contants等分隔到他们自己的文件夹中,但我没有继承该文件夹作为命名空间的一部分,它们只是容器以保持整洁。

我想知道是否有人有这方面的经验?

我是否应该将我的接口分隔到他们自己的文件夹中(不将该文件夹作为命名空间的一部分继承)

我是否应该将课程分开?

我也有类是其他类的子类。即类将其实现为属性。因此它永远不会在外面实例化。所以我应该将它们进一步分开并放入(例如)一个名为“Products”的文件夹,在这个文件夹中我会有我的Product类,然后是我的item类和其他特定于Product的类?

同样,使用该文件夹作为分隔符的手段,而不是作为命名空间的一部分继承文件夹名称。

我很想听到一些反馈。

由于

1 个答案:

答案 0 :(得分:2)

在开发过程中很少出现这种情况。实际上,在大多数情况下,您最终会拥有单独的项目,而不是具有大量文件夹的单个项目。就个人而言,我认为一个复杂的项目有明显的代码味道。如果没有别的,你的项目将无法快速编译,因为它被编译为一个块,而单独的项目可以并行编译(或多或少 - 它们都受依赖项影响)。

那就是说,如果你真的想把所有东西都放在一个项目中,这就是我对它的看法:

  • 如果项目的所有元素都有共同点(例如,有用的扩展方法),我会创建一个名为Infrastructure的文件夹,确保它不是命名空间提供程序并将所有常见内容放在那里。
  • 我尝试在行为的基础上分离项目的其余部分,而不是类型。例如,你建议将枚举和类分开,但这对我来说似乎是错的 - 如果我有数据库实体是类或枚举,我宁愿有一个名为Entities的文件夹(因此我的命名空间为{ {1}})包含单个位置的枚举和类。 (另请注意,如果您突然将其迁移到名为MyProject.Entities的项目,则无需更改名称空间。)

总结一下 - 尝试按功能分组文件,而不是按类型分组。