静态类库的替代方案

本文关键字:方案 静态类 类库 静态 | 更新日期: 2023-09-27 17:47:49

我有一个大型的静态"Utility"类集合,其中包含非常通用的静态方法。例如,我有一个CollectionUtility类,它有一些有用的方法,比如:

公共静态void RemoveDuplicates(ICollection集合)。。。etc

在C#3.0中,我一直在将这些方法转换为扩展方法。

现在,我听到一些人说,在"企业级"应用程序中,避免使用这些静态类和方法的大型库通常被认为是最佳实践。我想它可能会变得很难维持。

对于那些为大公司从事大型企业项目的人来说,有一个问题——你是否维护这样的实用程序类库?你做什么?

静态类库的替代方案

您谈论的是共享库的代码。静态方法在共享库中确实有一席之地。查看System.Linq.Enumerable

我会遵循以下指导原则:

  • 默认情况下,这些不是静态方法。它们应该只是静态方法,因为它们天生是无状态的(行为仅取决于参数)。如果它们不是自然无状态的,那么您应该创建一个适当的类来管理这种状态
  • 用单元测试涵盖这些内容。如果你不进行任何其他的单元测试,那么就对这些进行单元测试。这应该很容易做到。如果这不容易,那就不对

如果依赖项注入是你喜欢的,你仍然可以使用它。依赖于静态方法的代码可以调用引用该静态方法的Func(T,U)或Action。

绝对不是。随着时间的推移,实用程序模块会变成大量粗糙代码的集合。

我通常只把配置和常量之类的东西放在singleton或静态类中,因为它永远不会改变,而且可能是"全局的"。

我听过一些人说,在"企业级"应用程序中,避免使用这些静态类和方法的大型库通常被认为是最佳实践。我想它可能会变得很难维持。

IMHO你应该应用泛型之类的东西来减少你的实用程序方法/库的大小,如果你只在一个地方使用一个实用程序方法,那么它就不属于共享库,但最终你仍然可能有很多。

无论如何,这让我很困惑。如果你不把它们放在共享库里,你会把它们放哪里?复制/粘贴到每个项目或类似的愚蠢的东西?