【问题标题】:Is it OK to have code in the root of a project?在项目的根目录中有代码可以吗?
【发布时间】:2024-01-17 14:34:01
【问题描述】:

我正在尝试提出有关项目目录结构的最佳实践。

我最近的想法是项目的根目录中不应该有类。所有类必须位于以下目录之一下

  • 用户界面
  • 业务对象
  • 业务逻辑
  • 数据访问

我想听听其他人的想法,是否有将东西放在根级别或查找不适合的类的用例

【问题讨论】:

    标签: c# directory structure


    【解决方案1】:

    这个blog 应该为您提供一些有趣的阅读,尽管它已经三岁了。除了目录结构之外,它还可能为您提供一些想法。

    【讨论】:

      【解决方案2】:

      我放入根文件夹的唯一文件是 Program.csProgram.ico(如果它是可执行应用程序)。

      【讨论】:

        【解决方案3】:

        如果您在谈论 C#,那么我会将您的 DAL、BLL、GUI 分成不同的项目,而不是一个项目。并有一个解决方案。这将强制每个代码文件位于其中一个项目中。

        我添加了一个例子:

        • 解决方案:项目名称
          • 项目:DAL(命名空间:ProjectName.DAL)
            • 文件夹:存储库(命名空间:ProjectName.DAL.Repositories)
            • 文件夹:合同(命名空间:ProjectName.DAL.Contracts)
            • 文件:您的实体映射配置
          • 项目:BLL(命名空间:ProjectName.BLL)
            • 文件夹:服务(命名空间:Project.BLL.Services)
            • 文件夹:实体(命名空间:Project.BLL.Entities)
            • 文件:IoC 配置类/通用业务逻辑
          • 项目:共享(命名空间:ProjectName.Shared)
            • 文件:整个应用程序的通用共享逻辑(例如 InvalidIdentifier 常量)
            • 此项目不应引用解决方案中的其他项目..
          • 项目:网站(命名空间:ProjectName.Website)
            • 您的 asp.net 网站用户界面
          • 项目:Winforms(命名空间:ProjectName.Winforms)
            • 您的 winform 用户界面

        如果可能,您应该为网站和 winforms 项目指定一个与您的应用程序相关的名称。

        【讨论】:

          【解决方案4】:

          我不这样做,但它与目录结构无关(对我而言)。我希望我的所有代码都在有意义的命名空间中。

          【讨论】:

            【解决方案5】:

            我总是将项目异常的基类放在根目录中。

            【讨论】: