【问题标题】:Separate projects or multiple class files ... namespace best practice in C#单独的项目或多个类文件... C# 中的命名空间最佳实践
【发布时间】:2010-02-09 18:17:16
【问题描述】:

我正在创建一个库,用于我正在构建的应用程序。我正在构建一个类似于下面的名称空间结构。

MyNamespace.Validation
MyNamespace.Reports
MyNamespace.Transactions
MyNamespace.DataImport
etc...

最佳实践是为每个子命名空间创建一个包含多个项目的解决方案,还是为每个子命名空间创建一个包含多个类文件的项目?谢谢。

【问题讨论】:

  • 无论你选择哪个:你应该总是(几乎)每个班级有一个文件。

标签: c# namespaces projects-and-solutions


【解决方案1】:

这两种方法各有利弊,您需要根据自己的情况自行决定。

支持多个项目:

  • 单独的程序集允许编译器提供更严格的指导,从而潜在地防止耦合蔓延。这使您可以更好地维护依赖关系。
  • 可以根据需要在其他项目中加载单独的程序集,从而可能简化重用。
  • 单独的程序集可以防止将不必要的代码加载到进程中,因为它们是按需加载的。

多个项目的缺点:

  • 更复杂的部署,因为需要部署更多文件(次要)
  • 构建/编译速度变慢,甚至可能因加载多个程序集而导致加载时间(次要)

就个人而言,我认为在大多数情况下利大于弊。我通常会将我的命名空间拆分为单独的程序集,前提是它们不相关。就你而言,你正在研究 4 个非常不同的概念,所以我的直觉是拆分是最有意义的。

【讨论】:

  • +1 - 虽然我偏向另一个方向,但第一个“Pro”很重要。你不想组合这么多的类,以至于破坏了internal可见性修饰符的重要性!
  • 是的。第一个 Pro(和第三个)是我通常这样做的主要原因。
【解决方案2】:

我会说这取决于。

  • 首先,最好将每个类放在自己的文件中。
  • 如果您使用一个项目,我会为该项目中的每个命名空间创建文件夹,并将代码文件放在适当的文件夹中。
  • 执行上述操作后,Visual Studio 将自动在正确的命名空间内创建新的类文件

我认为这里真正的问题是:

如果只使用一次,将所有内容放在一个项目中是有意义的。然而,如果这段代码是可重用的,你应该考虑是否会重用这个库的一部分(或一个子命名空间)。如果答案是肯定的,我会将命名空间拆分为单独的项目,因此将来您只能包含您需要的项目。

【讨论】:

    【解决方案3】:

    我会选择一个包含多个项目的解决方案。

    优点:
    - 每个项目都可以是一个单独的 dll
    - 一个解决方案中的所有项目,便于在文件之间导航

    【讨论】:

      【解决方案4】:

      确切地决定如何分解您的解决方案是主观的 - 这实际上取决于您的代码的细节。

      但是,有一点是肯定的:维护多个程序集有缺点! This article 特别擅长描述这些缺点,观察它们如何在开发时、编译时、部署时和运行时增加成本。

      我使用尽可能少的程序集,目标是单个程序集,同时隔离域的易变区域。当多个程序集显然是合适或需要时(而且它们通常是,特别是为了强制解耦),我会尽我所能将同时更改的接口分组到相同的程序集中。

      【讨论】:

        【解决方案5】:

        我通常遵循一个程序集是一个命名空间的模式,DLL 名称在命名空间中。更容易找到要引用的 DLL

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-02
          • 1970-01-01
          • 2010-10-03
          • 1970-01-01
          • 2013-11-18
          • 2013-05-18
          • 2021-09-02
          • 1970-01-01
          相关资源
          最近更新 更多