3

我有大量包含非常通用的静态方法的静态“实用程序”类。例如,我有一个 CollectionUtility 类,它具有有用的方法,例如:

公共静态无效 RemoveDuplicates(ICollection 集合)...等

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

现在,我听到一些谈话,在“企业级”应用程序中,通常认为最好的做法是避免使用这些静态类和方法的大型库。我想它可能很难维护。

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

4

4 回答 4

1

您正在谈论将成为共享库内容的代码。静态方法确实在共享库中占有一席之地。查看 System.Linq.Enumerable

我会遵循以下准则:

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

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

于 2008-10-09T03:16:22.140 回答
0

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

于 2008-10-08T22:41:53.177 回答
0

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

于 2008-10-08T22:43:57.510 回答
0

我听过一些谈话,在“企业级”应用程序中,通常认为最好的做法是避免使用这些静态类和方法的大型库。我想它可能很难维护。

恕我直言,您应该应用泛型之类的东西来减少实用方法/库的大小,如果您只在一个地方使用实用方法,那么它不属于共享库,但归根结底你仍然可能有很多。

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

于 2008-10-09T03:38:25.560 回答