【问题标题】:Arranging/Organizing my classes/interfaces into folders? Not changing namespace with folder (Resharper: Namespace Provider = false)将我的类/接口安排/组织到文件夹中?不使用文件夹更改命名空间(Resharper:命名空间提供程序 = false)
【发布时间】:2011-03-28 08:55:45
【问题描述】:

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

我目前在根目录中拥有我的所有类和所有接口。

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

我想知道是否有人在这里有任何经验?

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

我也应该分开我的班级吗?

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

同样,使用文件夹作为一种分离方式,而不是继承文件夹名称作为命名空间的一部分。

我很想听听一些反馈。

谢谢

【问题讨论】:

    标签: .net resharper namespace-organisation


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您好德米特里,感谢您的回复。当然,我会像微软那样将事情分开,即 System = main classes,System.Globalization = global classes ...但即使这样做,每个项目也将包含相当数量的类等,所以我认为需要一些组织?
    猜你喜欢
    • 2015-07-11
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多