Lors de l'écriture de classes utilitaires en Java, quelles sont les bonnes directives à suivre?
Les paquets doivent-ils être "util" ou "utils"? Est-ce ClassUtil ou ClassUtils? Quand une classe est-elle un «assistant» ou un «utilitaire»? Utilitaire ou utilitaires? Ou utilisez-vous un mélange d'entre eux?
La bibliothèque Java standard utilise à la fois des utilitaires et des utilitaires:
- javax.swing.Utilities
- javax.print.attribute.AttributeSetUtilities
- javax.swing.plaf.basic.BasicGraphicsUtils
Apache utilise une variété d'Util et Utils, bien que principalement 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 utilise de nombreuses classes Helper et Utils:
- org.springframework.web.util.UrlPathHelper
- org.springframework.core.ReflectiveVisitorHelper
- org.springframework.core.NestedExceptionUtils
- org.springframework.util.NumberUtils
Alors, comment nommez-vous vos classes d'utilité?
Il n'y a pas de règle / convention standard dans le monde Java pour cela. Cependant, je préfère ajouter "s" à la fin du nom de la classe comme @colinD l'a mentionné.
Cela semble assez standard par rapport à ce que fait Josh Bloch, le concepteur de l'API Java Master (collection java ainsi que collection google)
Tant que Helper et Util disparaissent, j'appellerai quelque chose un Helper quand il a des API qui aident à atteindre une fonctionnalité spécifique d'un package (en considérant un package comme pour implémenter un module); signifie alors qu'un Util peut être appelé dans n'importe quel contexte.
Par exemple, dans une application liée aux comptes bancaires, toutes les API statiques d'utilité spécifiques à un numéro iraient à
org.mycompany.util.Numbers
Toutes les règles métier spécifiques au "Compte" aidant les API seraient envoyées à
Après tout, il s'agit de fournir une meilleure documentation et un code plus propre.
la source
J'aime la convention d'ajouter simplement "s" au nom du type lorsque le type est une interface ou une classe que vous ne contrôlez pas. Des exemples de cela dans le JDK incluent
Collections
etExecutors
. C'est aussi la convention utilisée dans les collections Google.Lorsque vous avez affaire à une classe sur laquelle vous avez un contrôle, je dirais que les méthodes utilitaires appartiennent généralement à la classe elle-même.
la source
Je pense que «utils» devrait être le nom du paquet. Les noms de classe doivent spécifier le but de la logique à l'intérieur. L'ajout du ou des suffixes -util (s) est redondant.
la source
tld.organization.app.util
paquet ne devrait pas exister (pourrait, mais ne devrait pas), n'importe quel nombre detld.organization.app.feature.util
paquets convient parfaitement.Je suis à peu près sûr que les mots «helpers» et «utilities» sont utilisés de manière interchangeable. Quoi qu'il en soit, à en juger par les exemples que vous avez fournis, je dirais que si votre nom de classe est une abréviation (ou contient des abréviations telles que "DomUtil"), appelez votre package "whatthing.WhateverUtil" (ou Utils s'il y a plus d'un utilitaire dans votre package ). Sinon, s'il a un nom complet au lieu d'une abréviation, alors appelez-le "peu importe.
Cela dépend vraiment de vous, mais tant que les codeurs savent de quoi vous parlez, vous êtes prêt à partir. Si vous faites cela professionnellement en tant que travail pour quelqu'un, demandez-lui quelles sont ses normes de codage avant de suivre mon conseil. Suivez toujours les normes de l'atelier, quoi qu'il en soit, car cela vous aidera à conserver votre emploi. :-)
la source