替代静态类库

时间:2008-10-08 22:35:21

标签: c# class static

我有一大堆静态'Utility'类,它们包含非常通用的静态方法。例如,我有一个CollectionUtility类,它有一些有用的方法,如:

public static void RemoveDuplicates(ICollection collection)... etc

使用C#3.0,我一直在将它们转换为扩展方法。

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

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

4 个答案:

答案 0 :(得分:1)

你所说的代码是共享库的东西。静态方法确实在共享库中占有一席之地。查看System.Linq.Enumerable

我会遵循以下准则:

  • 默认情况下,这些不是静态方法。它们应该只是静态方法,因为它们自然是无状态的(行为仅取决于参数)。如果他们不是天生的无国籍人,那么你应该做一个适当的班级来管理那个州。
  • 使用单元测试覆盖这些内容。如果你没有其他任何单元测试,单元测试这些。这应该非常容易。如果这不容易,这是不对的。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我通常只将配置和常量之类的东西放在单例或静态类中,因为它永远不会改变,也可能是“全局的”。

答案 3 :(得分:0)

  

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

恕我直言,您应该应用泛型等内容来减少实用程序方法/库的大小,如果您只在一个地方使用实用程序方法,那么它不属于共享库,但最后那天你还有很多可能。

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