145 votes

Quelles sont les différences entre les classes Helper et Utility ?

Comment déterminer comment appeler une classe XHelper ou XUtils ?

A mon avis :

Classe d'aide est une classe qui peut être instanciée et effectuer des tâches commerciales.

Classe Utils est une classe statique qui effectue de petites opérations répétitives sur un type d'instance (exemple des classes utils ArrayUtils ou IOUtils d'Apache).

130voto

Peter Lawrey Points 229686

Il existe de nombreux styles de dénomination à utiliser. Je suggérerais Utils simplement parce que c'est plus commun.

Une classe utilitaire doit avoir uniquement des méthodes statiques et être sans état. Vous ne créeriez pas une instance d'une telle classe.

Un Helper peut être une classe utilitaire, il peut être stateful ou nécessiter la création d'une instance. J'éviterais cela si possible.

Si vous pouvez rendre le nom plus spécifique, par exemple, s'il a des méthodes de tri, faites-en un XSorter.

Pour les tableaux, vous pouvez trouver des classes d'aide comme

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

En bref, une classe utilitaire est un enum sans instances.

enum XUtils {;
    static methods here
}

Si vous devez implémenter une interface, j'utiliserais un Singleton sans état.

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}

29voto

Jesper Points 65733

En général ? C'est entièrement arbitraire. Il n'y a pas de règles pour cela.

20voto

James M. Lay Points 866

Un utilitaire est une classe de "nœud feuille" d'usage général. C'est-à-dire qu'il n'a pas de dépendances dans votre projet et peut être porté d'un projet à l'autre sans se casser ou devenir inutile. Exemples : Vector3 , RandomNumberGenerator , StringMatcher etc...

Un "helper" semble être toute classe dont la conception est d'aider une autre classe. Cela peut dépendre ou non de votre projet. Si vous créez un GameNetworkClient on pourrait dire que la GameNetworkConnection est une "aide", parce qu'elle "aide" la classe GameNetworkClient .

La façon dont les développeurs font référence aux outils reflète l'usage commun de ces mots. Si vous vous souvenez avoir entendu des outils décrits comme "utiles" ou "utiles", un outil utile a tendance à avoir un certain contexte (la râpe à fromage aide à râper le fromage, l'épluche-maïs aide à éplucher le maïs, le chargeur rapide aide à recharger une arme à feu). Un "utilitaire" est censé fonctionner dans une variété de contextes (WD-40, ruban adhésif, couteaux d'armée, colle, lampe de poche, etc...).

9voto

typhon04 Points 303

Comme Jesper l'a dit, c'est entièrement arbitraire . Vous pouvez réfléchir à ce qui fonctionne pour votre organisation et en faire la convention.

Pour moi, c'est quelque chose comme ça :

outils - Classe statique, qui peut être librement déplacée et importée partout.

Effectuer des tâches générales qui pourraient être utiles dans différents modules. Comme Peter Lawrey l'a dit, plus noms spécifiques sont utiles.

aide - Classe aider une autre classe ou un module.

Les tâches qui ne sont utilisées que dans le module où elles sont placées et qui n'ont pas de sens à être importées ailleurs. Le nom pourrait donc être plus spécifique - Nom du module Assistant (par exemple AdministrationHelper , LoginHelper )

3voto

Sean Patrick Floyd Points 109428

Il n'y a pas de réponse définitive à cette question. Choisissez un schéma de dénomination et tenez-vous en à ce schéma. Nommer vos paquets et vos classes est une partie importante de l'architecture logicielle, et personne ne peut vous enlever cette décision.

Personnellement, je préfère le XHelper, mais je vois plus souvent des XUtils dans du code étranger.

J'aime aussi le système de dénomination "pluriel" que vous trouverez à la fois dans le JDK et dans le système de gestion de l'information. Goyave :

si une classe traite de Collection il s'appelle Collections

Tableau > Tableaux (jdk)
Liste > Listes (goyave)
Carte > Cartes (goyave)

etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X