在.NET项目中构造文件

在.NET项目中构造文件,.net,directory-structure,.net,Directory Structure,在MVC应用程序中,您可以获得预定义的项目框架,其中包含模型、视图和控制器的目录。 然而,当创建类库或控制台应用程序时,您不会得到这样的项目框架 随着项目的增长,许多文件最终会积累在项目的根目录中。因此,可能会产生以某种方式对文件进行分组的愿望 在与同事合作的项目中,我遇到过一些文件,这些文件被分组到名为Interfaces、enum和Extensions的目录中。按照这种思路,可能还可以使用过滤器、属性和抽象类的目录。我想这可以称为“基于语言结构的分组”,尽管任何一致的分组都可能比没有好,但我

在MVC应用程序中,您可以获得预定义的项目框架,其中包含模型、视图和控制器的目录。 然而,当创建类库或控制台应用程序时,您不会得到这样的项目框架

随着项目的增长,许多文件最终会积累在项目的根目录中。因此,可能会产生以某种方式对文件进行分组的愿望

在与同事合作的项目中,我遇到过一些文件,这些文件被分组到名为Interfaces、enum和Extensions的目录中。按照这种思路,可能还可以使用过滤器、属性和抽象类的目录。我想这可以称为“基于语言结构的分组”,尽管任何一致的分组都可能比没有好,但我相信这种分组策略可能不是最合适的

查看GitHub上的Microsoft源代码,我发现接口及其实现往往位于同一个目录中,虽然存在文件分组,但并不是基于语言构造来完成的。我发现很难准确指出分组策略是什么

我意识到可能没有任何明确的答案,因为需要分组的内容可能特定于手头的特定项目。
然而,我正在寻找有用的建议和指导原则,以确定哪些项目应该分组以及如何分组。

我想你会发现,大多数项目都试图1)将属于一起的东西放在一起(例如,一组特定类使用的枚举不是分组在
enums
文件夹中,而是分组在包含这些类的文件夹中),以及2)将事物放置在一个模仿其命名空间层次结构的结构中(正如您的模型名称空间将是MVC项目中的MyProject.Areas.MyArea.Models一样,
Areas
MyArea
Models
都是子文件夹


这就是说,您看到变化的原因是没有一种统一的标准方法来组织源代码-您可以作为一个组织来决定。这不是一件坏事:您的团队可能会与下一个团队对事物进行不同的概念化,因此会有不同的项目结构。随着时间的推移,该结构将演变为kes对团队来说很有意义,即使你一开始就想到了其他人正确的组织方式。

我想你会发现,大多数项目都试图1)将属于一起的东西放在一起(例如,一组特定类使用的枚举不是在
enums
文件夹中,而是在一个包含这些类的文件夹中),和2)将事物放置在一个模仿其命名空间层次结构的结构中(就像MVC项目中的模型命名空间是MyProject.Areas.MyArea.Models一样,
Areas
MyArea
Models
都是子文件夹


这就是说,您看到变化的原因是没有一种统一的标准方法来组织源代码-您可以作为一个组织来决定。这不是一件坏事:您的团队可能会与下一个团队对事物进行不同的概念化,因此会有不同的项目结构。随着时间的推移,该结构将演变为kes对团队来说很有意义,即使你一开始就想到了其他人正确的结构方式。

如果结构随着时间的推移而变化,那么任何依赖于库的东西都会随着结构的变化而中断。当我对相关文件进行分组时,我如何知道它们应该在项目的文件夹中,还是在单独的项目中?问问自己,C这些东西是独立的,作为一个整体吗?除了你,没有人能回答这个问题。真的。如果结构随着时间的推移而变化,那么依赖于库的任何东西都会随着结构的变化而中断。当我对相关文件进行分组时,我如何知道它们应该在项目的文件夹中,还是在单独的项目中?问问自己,这些东西可以吗独立,作为一个整体?除了你,没有人能回答这个问题,真的。