Java 实用程序类的命名约定

新手上路,请多包涵

在用 Java 编写实用程序类时,有哪些好的准则可以遵循?

packges 应该是“util”还是“utils”?是 ClassUtil 还是 ClassUtils?类什么时候是“Helper”或“Utility”?实用程序还是实用程序?还是混合使用它们?

标准 Java 库同时使用 Utils 和 Utilities:

  • javax.swing.Utilities
  • javax.print.attribute.AttributeSetUtilities
  • javax.swing.plaf.basic.BasicGraphicsUtils

Apache 使用各种 Util 和 Utils,尽管主要是 Utils:

  • org.apache.commons.modeler.util.DomUtil
  • org.apache.commons.modeler.util.IntrospectionUtils
  • org.apache.commons.io.FileSystemUtils
  • org.apache.lucene.wordnet.AnalyzerUtil
  • org.apache.lucene.util.ArrayUtil
  • org.apache.lucene.xmlparser.DOMUtils

Spring 使用了大量的 Helper 和 Utils 类:

  • org.springframework.web.util.UrlPathHelper
  • org.springframework.core.ReflectiveVisitorHelper
  • org.springframework.core.NestedExceptionUtils
  • org.springframework.util.NumberUtils

那么,如何命名实用程序类?

原文由 JR. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 867
2 个回答

与许多此类约定一样,重要的不是您使用的约定,而是您始终如一地使用它。就像,如果你有三个实用程序类,你称它们为 CustomerUtil、ProductUtils 和 StoreUtility,其他试图使用你的类的人会经常感到困惑,并错误地输入 CustomerUtils,不得不查找它,诅咒你几次,等等(我曾经听过一个关于一致性的讲座,演讲者放了一张幻灯片,展示了他演讲的大纲,其中三个要点分别标记为“1”、“2nd”和“C”。)

永远不要创建仅在拼写上有细微差别的两个名称,例如 CustomerUtil 和 CustomerUtility。如果有一个很好的理由来制作两个类,那么它们一定有什么不同,而且这个名字至少应该让我们知道有什么不同。如果一个包含与名称和地址相关的实用函数,另一个包含与订单相关的实用函数,则将它们称为 CustomerNameAndAddressUtil 和 CustomerOrderUtil 或类似名称。当我看到名字中毫无意义的细微差别时,我经常会抓狂。就在昨天,我正在开发一个程序,该程序具有三个运费字段,分别名为“freight”、“freightcost”和“frght”。我不得不研究代码以找出它们之间的区别。

原文由 Jay 发布,翻译遵循 CC BY-SA 2.5 许可协议

Java 世界对此没有标准规则/约定。但是,正如@colinD 提到的那样,我更喜欢在类名末尾添加“s”。

对于 Java API 设计大师 Josh Bloch 所做 的事情(java 集合以及 google 集合)来说,这似乎是非常标准的

只要有 Helper 和 Util,当它具有有助于实现包的特定功能的 API 时,我会称其为 Helper(将包视为实现模块);意味着可以在任何上下文中调用 Util。

例如,在与银行账户相关的应用程序中,所有特定于数字的实用程序静态 API 都将转到 org.mycompany.util.Numbers

所有帮助 API 的“帐户”特定业务规则都将转到

org.mycompany.account.AccountHelper

毕竟,这是提供更好的文档和更清晰的代码的问题。

原文由 ring bearer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题