190 votes

Comment nommer des méthodes comme usine?

Je suppose que la plupart d'usine comme les méthodes de démarrer avec create. Mais pourquoi sont-ils appelés "créer"? Pourquoi ne pas "faire", "produire", "construire", "générer" ou quelque chose d'autre? Est-ce seulement une question de goût? Une convention? Ou est-il une signification spéciale dans la "création"?

createURI(...) 
makeURI(...)
produceURI(...)
buildURI(...)
generateURI(...)

Lequel choisiriez-vous, en général, et pourquoi?

163voto

Jason Williams Points 31901

Quelques pensées éparses:

  • "Créer" correspond à la fonction que la plupart des autres mots. Le meilleur mot que je peux penser à du haut de ma tête est "Construire". Dans le passé, 'Alloc' (allouer) pourrait avoir été utilisé dans des situations similaires, reflétant davantage l'accent sur les blocs de données que les objets dans les langages comme le C.

  • "Créer" est un court mot simple qui a clairement un sens intuitif. Dans la plupart des cas, les gens probablement juste le prendre comme la première, la plus évidente, mot qui vient à l'esprit quand ils veulent créer quelque chose. C'est une convention de nommage, et "la création de l'objet" est une façon courante de décrire le processus de... la création d'objets.

  • "Construire" est proche, mais il est généralement utilisé pour décrire une étape spécifique dans le processus de création d'un objet (allouer/de nouveaux, de construire, d'initialiser...)

  • La "construction" et "Faire" sont des termes courants pour les processus liés à la compilation d'un code, afin d'avoir des connotations différentes pour les programmeurs, ce qui implique un processus qui comprend plusieurs étapes et, éventuellement, d'un lot de l'activité du disque. Cependant, l'idée d'une Usine de "construire" quelque chose est une idée judicieuse, surtout dans les cas où un complexe de la structure des données est construit, ou de nombreuses pièces séparées de l'information sont combinés, d'une certaine façon.

  • "Générer" pour moi, implique un calcul qui est utilisé pour produire une valeur d'une entrée, tels que la génération d'un code de hachage ou d'un nombre aléatoire.

  • 'Produire', 'Générer', 'Construire' sont plus de type/lire que "Créer". Historiquement, les programmeurs ont favorisé les noms courts de réduire la frappe/de lecture.

131voto

Lescott Points 858

Joshua Bloch dans "Effective Java" suggèrent ce qui suit les conventions de nommage

valueOf - Retourne une instance qui a, grosso modo, la même valeur comme ses paramètres. Statiques usines sont effectivement de conversion de type de méthodes.

de - Un concis alternative à valueOf, popularisé par EnumSet (Point 32).

getInstance - Retourne une instance qui est décrite par les paramètres mais ne peut pas être dit avoir la même valeur. Dans le cas d'un singleton, getInstance ne prend aucun paramètre et renvoie la seule instance.

newInstance - Comme getInstance, sauf que newInstance garantit que chaque instance retournée est distinct de tous les autres.

getType - Comme getInstance, mais utilisée lorsque la méthode de factorisation est dans un une classe différente. Type indique le Type de l'objet renvoyé par la méthode de fabrique.

newType - Comme newInstance, mais utilisée lorsque la méthode de factorisation est dans un une classe différente. Type indique le Type de l'objet renvoyé par la méthode de fabrique.

27voto

Iain Points 358

Voulais ajouter un couple de points je ne vois pas dans d'autres réponses.

  1. Bien que, traditionnellement, l'Usine "signifie" crée des objets", je crois qu'il faut plus largement comme "me renvoie un objet qui se comporte comme je attendre". Je ne devrais pas toujours de savoir si c'est une nouvelle marque de l'objet, en fait, je ne pourriez pas de soins. Ainsi, dans les cas appropriés, vous pourriez éviter la création de... nom, même si c'est la façon dont vous êtes à la mise en œuvre de ce droit maintenant.

  2. La goyave est un bon répertoire de l'usine de nommage des idées. Il est de démocratiser un beau DSL style. exemples:

    Lists.newArrayListWithCapacity(100);
    ImmutableList.of("Hello", "World");
    

17voto

Don Roby Points 24965

"Créer" et "faire" sont courtes, assez évocateur, et ne sont pas liés à d'autres modèles dans d'appellation que je peux penser. J'ai aussi vu les deux assez souvent et pensez qu'ils peuvent être "standards de fait". J'avais en choisir une et de l'utiliser de manière cohérente, au moins au sein d'un projet. (En regardant mon propre projet en cours, j'ai l'impression d'utiliser "faire". J'espère que je suis cohérent...)

Éviter de "construire" parce qu'il va mieux avec le Générateur de modèle et d'éviter de "produire" parce qu'il évoque Producteur/Consommateur.

Pour vraiment continuer la métaphore de la "Fabrique" nom pour le modèle, je serais tenté par la "fabrication", mais c'est trop long un mot.

5voto

Amadan Points 41944

En partie à la convention, en partie sémantique.

Méthodes de fabrique (annoncée par le traditionnel create) doit invoquer appropriée des constructeurs. Si je voyais buildURI, je suppose qu'il s'agissait de calcul, ou de l'assemblage de pièces (et je ne crois pas qu'il y avait une usine). La première chose que j'ai pensé quand j'ai vu generateURI est de faire quelque chose au hasard, comme un nouveau personnalisée lien de téléchargement. Ils ne sont pas tous les mêmes, les différents mots évoquent des significations différentes; mais la plupart d'entre eux ne sont pas conventionalised.

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