单独的项目或多个类文件... C#中的命名空间最佳实践

时间:2010-02-09 18:17:17

标签: c# namespaces projects-and-solutions

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

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

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

5 个答案:

答案 0 :(得分:9)

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

赞成多个项目:

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

多个项目的缺点:

  • 更复杂的部署,因为需要部署更多文件(次要)
  • 较慢的构建/编译,甚至加载多个程序集(次要)的潜在加载时间

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:3)

我认为这取决于。

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

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

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

答案 3 :(得分:3)

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

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

我使用尽可能少的装配,旨在单个装配,同时隔离域的易失性区域。当多个程序集明显合适或需要时(并且它们通常是强制解耦),我会尽力将同时更改的接口分组到相同的程序集中。

答案 4 :(得分:1)

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