141

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

在我心里 :

助手类,是一个可以实例化并做一些业务工作的类

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

4

5 回答 5

128

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

Utility 类被理解为只有静态方法并且是无状态的。您不会创建此类的实例。

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

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

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

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

顺便说一句,实用程序类的简写是没有实例的枚举

enum XUtils {;
    static methods here
}

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

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}
于 2012-08-30T07:43:41.177 回答
28

一般来说?这完全是任意的。对此没有任何规定。

于 2012-08-30T07:38:43.970 回答
19

实用程序是通用的“叶节点”类。也就是说,它对您的项目没有任何依赖关系,并且可以从一个项目移植到另一个项目,而不会破坏或变得无用。例子:Vector3, RandomNumberGenerator, StringMatcher, 等等...

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

开发人员引用工具的方式反映了这些词的常见用法。如果您能回忆起被描述为“有用”与“有用”的听力工具,那么有用的工具往往有一些背景(奶酪刨丝器有助于磨碎奶酪,玉米剥离器有助于剥玉米,高速装载机有助于重新装载枪支)。“实用程序”有望在各种环境中工作(WD-40、胶带、军刀、胶水、手电筒等)。

于 2019-01-28T06:41:12.103 回答
9

正如 Jesper 所说,这完全是任意的。您可以考虑什么对您的组织有效,并将其作为惯例。

对我来说,它是这样的:

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

执行在不同模块中可能有用的一般任务。正如 Peter Lawrey 所说,更具体的名称很有用。

helper -帮助另一个类或模块的类。

仅在其放置的模块中使用并且在其他地方导入没有意义的任务。因此名称可能更具体 - ModuleName Helper(例如AdministrationHelperLoginHelper

于 2019-10-06T07:36:07.703 回答
3

这没有最终的答案。找出一种命名方案并坚持下去。命名你的包和类是软件架构的重要组成部分,没有人可以剥夺你的决定权。

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

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

如果一个类处理Collection对象,它被称为Collections

数组 > 数组 (jdk)
列表 > 列表 (guava)
地图 > 地图 (guava)

等等

于 2012-08-30T07:39:47.193 回答