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

我通常遵循全局variables/函数是邪恶的规则,并且每一段代码都应该存在于它所属的类中。

这是一条非常简单的规则,我相信直到现在我还没有遇到这个规则的问题。

然而,今天,我需要为我的程序集添加一个函数,而不是添加到特定的类。 也就是说,几乎所有的类都可以用于这个特定的function。

我应该在哪里放置这个function(+1重载)?

如果我把它放在“公用事业”课上,我觉得很肮脏。 如果我把它贴到一个半相关的class上,让其他class直接打电话给我,我感觉更糟。

这段代码基本上把一个IList<PointF>切成一个规范化列表。 我现在觉得把它作为IList<PointF>的扩展方法可能是最好的select…

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

通常,应该避免使用UtilsHelpertypes的类。 多数情况下,你会发现你可能会认为是一种效用方法,实际上它是一种相当具体的方法,可能属于它自己的类(就像你说的)。 但是,在Util的类(将相关的有用的方法分组的类)是有效的实体的情况下,将存在特定于域的情况。

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

我很less需要,但是我通常在C#所需的方法/variables和VB.NET所需的名称空间中添加一个内部静态类Util。

来自.NET Framework的样本

  • System.Collections.Specialized.CollectionsUtil
  • System.Net.WebUtility
  • 检查Microsoft的.NET Framework的源代码。 你会发现许多内部工具类。

当然,你应该把它放到“ListUtilities”或者PointListUtilities类中。 那么你并没有违背单一职责原则,这是一个全面的“公用事业”阶级的主要问题。