Java中实用程序类的命名约定

在Java中编写实用程序类时,有哪些遵循的指导原则?

包装应该是“util”还是“utils”? 它是ClassUtil还是ClassUtils? 什么时候上课是“助手”还是“实用”? 实用程序或公用程序? 或者你使用它们的混合物?

标准的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

那么,你如何命名你的公用事业类?

像许多这样的惯例一样,重要的不在于你使用什么约定,而是因为你一贯地使用惯例。 就像,如果你有三个实用工具类,你可以称它们为CustomerUtil,ProductUtils和StoreUtility,那么其他人试图使用你的类将会不断地感到困惑,错误地键入CustomerUtils,不得不查看它,诅咒你几次,等等(我听了一个一致的演讲,演讲者放了一张幻灯片,上面有三个要点,分别是“1”,“2”和“C”)。

永远不要做任何仅仅在一些细微的拼写上有区别的名字,比如有一个CustomerUtil和一个CustomerUtility。 如果有两个class级有充分的理由,那么他们就应该有一些不同的东西,这个名字至less应该给我们提供一个线索。 如果一个包含与名称和地址相关的效用函数,另一个包含与订单相关的效用函数,则将它们称为CustomerNameAndAddressUtil和CustomerOrderUtil等。 当我看到名字上毫无意义的细微差别时,我会经常发疯。 就像昨天一样,我正在制定一个计划,该计划有三个运费成本领域,分别叫做运费,货运成本和成本。 我不得不研究代码来弄清楚它们之间的区别是什么。

Java世界中没有这样的标准规则/惯例。 不过,我更喜欢在类名的末尾添加“s”,因为@colinD提到过。

这似乎是相当标准的什么主要的Java APIdevise师乔希布洛赫 (java集合以及谷歌收集)

只要Helper和Util去,我会调用一些帮助器,当它有API来帮助实现一个包的特定function(考虑一个包来实现一个模块)。 意味着在任何情况下都可以调用Util。

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

所有“帐户”特定的业务规则,帮助API将去

 org.mycompany.account.AccountHelper 

毕竟,这是一个提供更好的文档和更干净的代码的问题。

当types是一个接口或一个你不能控制的类时,我喜欢只将“s”jointypes名称的约定。 JDK中的例子包括CollectionsExecutors 。 这也是Google Collections中使用的惯例。

当你正在处理一个你可以控制的类的时候 ,我会说实用方法通常属于类本身。

我认为'utils'应该是包名。 类名应该指定其中的逻辑的目的。 添加sufix -util(s)是多余的。

我很确定“助手”和“工具”这两个词是可以互换的。 无论如何,根据您提供的示例来判断,如果您的类名称是缩写(或者像“DomUtil”中的缩写),则请将您的包称为“whatever.WhateverUtil”(或者如果包中包含多个实用程序)。 否则,如果它有一个全名而不是缩写,那么称它为“whatever.WhateverUtilities”。

这真的取决于你,但只要编码人员知道你在说什么,你就很好。 如果你正在为专业做这个工作,那么在征求我的意见之前,问他们他们的编码标准是什么。 总是遵循商店的标准,不pipe这会帮助你保持工作。 🙂