代码之家  ›  专栏  ›  技术社区  ›  John Gietzen

如果一个“实用程序”类是邪恶的,我应该把我的通用代码放在哪里?[关闭]

  •  60
  • John Gietzen  · 技术社区  · 15 年前

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

    这是一个很容易遵循的规则,我相信直到现在我才遇到这个规则的问题。

    但是,今天我需要向 装配 而不是特定的类。也就是说,我几乎所有的课程 能够 使用此特定功能。

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

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

    这段代码基本上就是 IList<PointF> 标准化列表。我现在觉得把它作为扩展方法添加到 ilist<点F> 可能是最好的选择…

    3 回复  |  直到 10 年前
        1
  •  29
  •   Håvard S    15 年前

    如果这是对 IList<PointF> ,则它应该是上的扩展方法 ilist<点F> .

    一般来说, Utils Helper 应避免使用类型类。通常情况下,你会发现 认为 是一个实用方法,实际上是一个相当具体的方法,可能属于它自己的类(如您所说)。但是,也有一些特定领域的案例 Util -类(对相关有用方法进行分组的类)是有效的实体。

        2
  •  11
  •   AMissico    15 年前

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

    我很少需要这样做,但我通常会在名称空间中添加一个内部静态类Util,该名称空间中的方法/变量对于C是必需的,而对于vb.net则是一个模块。

    来自.NET框架的示例

    • System.Collections.Specialized.CollectionsUtil
    • System.Net.WebUtility
    • 检查Microsoft的.NET Framework源代码。您将发现许多内部实用程序类。
        3
  •  4
  •   Ben Voigt    15 年前

    你应该把它放到一个“listputilities”或者 PointListUtilities 当然是课。那么您就不会违反单一责任原则,这是一个“实用程序”类的主要问题。

    推荐文章