在用 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 许可协议
与许多此类约定一样,重要的不是您使用的约定,而是您始终如一地使用它。就像,如果你有三个实用程序类,你称它们为 CustomerUtil、ProductUtils 和 StoreUtility,其他试图使用你的类的人会经常感到困惑,并错误地输入 CustomerUtils,不得不查找它,诅咒你几次,等等(我曾经听过一个关于一致性的讲座,演讲者放了一张幻灯片,展示了他演讲的大纲,其中三个要点分别标记为“1”、“2nd”和“C”。)
永远不要创建仅在拼写上有细微差别的两个名称,例如 CustomerUtil 和 CustomerUtility。如果有一个很好的理由来制作两个类,那么它们一定有什么不同,而且这个名字至少应该让我们知道有什么不同。如果一个包含与名称和地址相关的实用函数,另一个包含与订单相关的实用函数,则将它们称为 CustomerNameAndAddressUtil 和 CustomerOrderUtil 或类似名称。当我看到名字中毫无意义的细微差别时,我经常会抓狂。就在昨天,我正在开发一个程序,该程序具有三个运费字段,分别名为“freight”、“freightcost”和“frght”。我不得不研究代码以找出它们之间的区别。