如果一个“实用程序”类是邪恶的,我应该把我的泛型代码放在哪里?

我通常遵循这样的规则: 全局变量/函数是邪恶的,每段代码都应该存在于它所属的类中。

这是一个非常容易遵守的规则,我相信我从来没有遇到过这个规则的问题,直到现在。

然而,今天我需要在我的 集合中添加一个函数,而不是添加到一个特定的类中。也就是说,几乎我的所有类 可以都可以使用这个特定的函数。

我应该把这个函数放在哪里(+ 1重载) ?

如果我把它放在“实用程序”课上,我会觉得很脏。如果我把它附加到一个半相关的类上,让其他类直接调用它,我会感觉更糟。

这段代码基本上将 IList<PointF>分割成一个规范化列表。我现在觉得在 IList<PointF>上添加它作为扩展方法可能是最好的选择..。

27196 次浏览

当然,您应该将它放入一个“ ListUtitility”或 PointListUtilities类中。那么您并没有打破单一责任原则,这是一个包罗万象的“实用程序”类的主要问题。

如果这是 IList<PointF>上的操作,那么它应该是 IList<PointF>上的扩展方法。

一般来说,应该避免使用 UtilsHelper类型的类。通常,您会发现 好好想想可能是一个实用方法,实际上是一个相当特定的方法,可能属于它自己的类(正如您所说的)。但是,在一些特定于领域的情况下,类 Util的类(对相关有用方法进行分组的类)是有效的实体。

“全局”变量和方法没有错。你一直都在用。框架喜欢称它们为“静态”类或“静态”方法。

我很少需要,但我通常会在名称空间中添加一个内部静态类 Util,C # 需要这个方法/变量,VB.NET 需要这个模块。

来自.NETFramework 的示例

  • System.Collections.Specialized.CollectionsUtil
  • System.Net.WebUtility
  • 检查 Microsoft 的.NETFramework 源代码。您将发现许多内部实用工具类。