Helper和Utility类有什么区别?

时间:2012-08-30 07:37:37

标签: java

如何确定如何调用类XHelper或XUtils?

在我看来:

帮助程序类,是一个可以实例化并进行一些业务工作的类

Utils类,是一个静态类,可以对一种实例执行小的重复操作(例如,来自Apache的utils类ArrayUtils或IOUtils)

5 个答案:

答案 0 :(得分:78)

有许多命名样式可供使用。我建议Utils只是因为它更常见。

实用程序类被理解为只有静态方法并且是无状态的。你不会创建这样一个类的实例。

帮助程序可以是实用程序类,也可以是有状态的,或者需要创建实例。如果可能,我会避免这种情况。

如果您可以使名称更具体。例如如果它有排序方法,请将其设为XSorter

对于数组,您可以找到辅助类,如

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

BTW实用程序类的简写是没有实例的枚举

enum XUtils {;
    static methods here
}

如果你需要实现一个接口,我会使用一个无状态的Singleton。

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}

答案 1 :(得分:10)

一般情况下?这完全是武断的。对此没有规定。

答案 2 :(得分:2)

对此没有最终答案。弄清楚一个命名方案并坚持下去。命名您的包和类是软件架构的重要组成部分,没有人可以从您那里做出决定。

我个人更喜欢XHelper,但我在外国代码中经常看到XUtils。

我也喜欢你在JDK和Guava中找到的“复数”命名方案:

如果某个类处理Collection个对象,则称为Collections

数组>数组(jdk)
列表>列表(番石榴)
地图>地图(番石榴)

答案 3 :(得分:2)

正如Jesper所说,这完全是任意的。您可以考虑对您的组织有效的方法,并制定相应的约定。

对我来说,就像这样:

  

实用程序-静态类,可以在任何地方自由移动和导入。

执行在不同模块中可能有用的常规任务。正如彼得·劳瑞(Peter Lawrey)所说,更多的特定名称很有用。

  

助手-类帮助另一个类或模块。

仅在其放置的模块中使用的任务,将其导入其他位置没有意义。因此,该名称可能更具体- ModuleName Helper (例如, AdministrationHelper LoginHelper

答案 4 :(得分:1)

实用程序是一般使用的“叶节点”类。也就是说,它与您的项目没有任何依赖性,可以在不中断或变得无用的情况下从一个项目移植到另一个项目。示例:Vector3RandomNumberGeneratorStringMatcher等...

“帮助器”似乎是任何旨在帮助另一个类的类。这些可能取决于也可能不取决于您的项目。如果要创建GameNetworkClient类,则可以说GameNetworkConnection类是一个“帮助器”,因为它“帮助”了GameNetworkClient

开发人员引用工具的方式反映了这些词的常用用法。如果您可以回忆起被描述为“有用”与“有用”的助听器,那么有用的工具往往具有一定的背景(奶酪刨丝器有助于磨碎奶酪,玉米剥皮器有助于剥皮玉米,快速装载器有助于重新装填枪支)。预计“实用程序”将在多种情况下工作(WD-40,胶带,军刀,胶水,手电筒等)。