Al escribir clases de utilidad en Java, ¿cuáles son algunas buenas pautas a seguir?
¿Deben ser los paquetes "util" o "utils"? ¿Es ClassUtil o ClassUtils? ¿Cuándo es una clase un "ayudante" o una "utilidad"? ¿Utilidad o utilidades? ¿O usas una mezcla de ellos?
La biblioteca estándar de Java utiliza utilidades y utilidades:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
Apache usa una variedad de Util y Utils, aunque principalmente 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 usa muchas clases Helper y Utils:
- org.springframework.web.util.UrlPathHelper
- org.springframework.core.ReflectiveVisitorHelper
- org.springframework.core.NestedExceptionUtils
- org.springframework.util.NumberUtils
Entonces, ¿cómo nombras tus clases de servicios públicos?

No existe una regla / convención estándar en el mundo de Java para esto. Sin embargo, prefiero agregar "s" al final del nombre de la clase, como ha mencionado @colinD.
Eso parece bastante estándar para lo que hace el diseñador maestro de API de Java, Josh Bloch (colección de Java y colección de Google)
Mientras Helper y Util vayan, llamaré a algo Helper cuando tenga API que ayuden a lograr una funcionalidad específica de un paquete (considerando un paquete como para implementar un módulo); es decir, mientras que una Util se puede llamar en cualquier contexto.
Por ejemplo, en una aplicación relacionada con cuentas bancarias, todas las API estáticas de servicios públicos específicos del número irían a
org.mycompany.util.NumbersTodas las API de ayuda de reglas de negocio específicas de "Cuenta" irían a
Después de todo, se trata de proporcionar una mejor documentación y un código más limpio.
fuente
Me gusta la convención de simplemente agregar "s" al nombre del tipo cuando el tipo es una interfaz o una clase que no controlas. Ejemplos de eso en el JDK incluyen
CollectionsyExecutors. También es la convención utilizada en las colecciones de Google.Cuando se trata de una clase sobre la que tiene control, yo diría que los métodos de utilidad pertenecen a la clase misma en general.
fuente
Creo que 'utils' debería ser el nombre del paquete. Los nombres de las clases deben especificar el propósito de la lógica dentro de ellos. Agregar el sufijo -util (s) es redundante.
fuente
tld.organization.app.utilpaquete no debería existir (podría, pero no debería), cualquier número detld.organization.app.feature.utilpaquetes está perfectamente bien.Estoy bastante seguro de que las palabras "ayudantes" y "utilidades" se usan indistintamente. De todos modos, a juzgar por los ejemplos que proporcionó, diría que si su nombre de clase es una abreviatura (o tiene abreviaturas como "DomUtil"), llame a su paquete "lo que sea.WhateverUtil" (o Utils si hay más de una utilidad en su paquete ). De lo contrario, si tiene un nombre completo en lugar de una abreviatura, llámelo "cualquiera. Cualquiera que sea la utilidad".
Realmente depende de usted, pero mientras los programadores sepan de lo que está hablando, está listo para comenzar. Sin embargo, si está haciendo esto profesionalmente como un trabajo para alguien, pregúntele cuáles son sus estándares de codificación antes de seguir mi consejo. Siga siempre los estándares del taller, pase lo que pase, ya que eso le ayudará a mantener su trabajo. :-)
fuente