Comment nommez-vous les fonctions / variables / etc quand vous ne pouvez pas penser à un bon nom? [fermé]

13

Lorsque vous définissez une fonction / variable / etc et que vous ne savez pas comment la nommer, comment la nommez-vous? Comment trouvez-vous un nom?

Si vous utilisez un nom temporaire comme marque de place jusqu'à ce que vous lui donniez son vrai nom, quel nom temporaire utilisez-vous?


mettre à jour

J'utilise des choses comme WILL_NAME_LATER, NEEDS_NAMEou TO_BE_NAMED. J'espérais qu'il y avait une convention adoptée, j'espérais en fait que si j'utilisais cette convention adoptée, mon IDE mettrait en évidence le nom jusqu'à ce que je le change.

JD Isaacks
la source
Soyez prudent lorsque vous utilisez toutes les majuscules pour les noms de variables. Par convention populaire, cela signifie une variable globale.
spong
@sunpech, je sais, j'utilise aussi cette convention de dénomination pour les constantes. Mais je pense que la capitalisation le fait ressortir donc je n'oublie pas de le renommer. Je ne le laisse pas nommé ainsi comme ça longtemps.
JD Isaacks
3
Pour tous ceux qui disent, vous ne devriez jamais avoir de problème pour trouver un nom ... Même Jon Skeet ne peut parfois pas: stackoverflow.com/questions/521893/…
JD Isaacks
@JohnIsaacks Je pense que vous devriez être temporaire en gras . Trop de gens lisent cette question et transforment le code en quelque chose de sacré. Honnêtement, oui, vous pouvez écrire du code bâclé SURTOUT lorsque vous essayez de passer à quelque chose de plus important. Nous ne gravons pas le code dans la pierre ici.
spong
1
Je suppose que la convention pour quelque chose comme ça serait d'ajouter un TODO dans le code, avec l'explication de la raison pour laquelle vous devez le mettre à jour. De nombreux outils peuvent analyser ces TODO et afficher une liste de tout ce qui reste à faire.
Eduardo Scoz du

Réponses:

29

Il est presque impossible de ne pas pouvoir penser à un nom pour un artefact que vous souhaitez concevoir. Vous n'aimerez peut-être pas le nom que vous proposez car il n'est pas concis ou sexy, mais si vous réfléchissez trop, vous vous retrouverez avec un artefact mal nommé.

Disons que vous avez quelque chose qui vous aide à construire des objets, mais vous ne savez pas que cela s'appelle généralement une usine. Appelez-le simplement ObjectCreator. Cela semble obtus, mais au moins c'est clair.

Disons que vous avez un dictionnaire qui convertit les noms d'hôte en adresses IP. Allez-y et appelez-le HostnamesToIpAddresses. Bien sûr, c'est long, mais il dit exactement ce qu'il fait.

L'incapacité de trouver un nom pour quelque chose signifie que vous ne savez pas ce qu'il fait, ce qui signifie également que vous avez un plus gros problème devant vous.

Mark Canlas
la source
8
Je veux toujours gifler les gens qui se plaignent que les identifiants sont trop longs (quand ils ne sont que trois ou quatre mots). Nous ne devrions pas être limités par notre vitesse de frappe, et si nous le sommes, nous devrions aller regarder ABCD et apprendre à taper!
dash-tom-bang
1
+1 à cause de "The inability to come up with a name for something means you don't know what it is doing". Je pense que c'est vraiment un point important. En réalisant cela, vous pouvez trouver des ambiguïtés et des disparités dans le code.
BiAiB
34

J'essaie toujours de donner à mes variables et fonctions de grands noms .

Si je ne peux pas penser à un grand nom, je me contenterai d'un bon nom .

Si je ne peux pas trouver un bon nom, je vais utiliser un nom correct .

Je n'ai jamais, en 15 ans de programmation professionnelle, été incapable de trouver un nom décent.

Portman
la source
6
+1 pour être, comme, poétique.
spong
1
... cependant, il y a 15 ans et 6 mois, Microsoft Bob était né.
VirtuosiMedia
12

Si vous ne pouvez pas penser à un bon nom sur une variable ou une fonction, vous ne comprenez pas ce que vous faites ou vous avez un mauvais design. De toute façon, gifler un nom arbitraire comme "x" (à moins que vous n'ayez affaire à des coordonnées) ne résoudra pas votre dilemme; cela ne fera qu'aggraver la situation et augmenter la douleur.

gablin
la source
8
Je ne suis pas d'accord. Les développeurs n'ont pas toujours une compréhension complète de la terminologie de l'entreprise. Heck, même le client peut ne pas être en mesure de transmettre la terminologie lors de la collecte des exigences - et encore moins parfois même comprendre leur propre entreprise! Mais cela n'empêche pas la production de logiciels. Cela n'empêche pas la création de prototypes. Ou même que le code soit rejeté à cause d'un manque de compréhension. Mais le code dans ces situations doit encore être produit et livré.
spong
3
@sunpech Excusez-moi, mais c'est un peu effrayant. Essayez-vous de nous dire qu'il est courant d'écrire du code aléatoire sans savoir ce qu'il fait réellement? Si vous ne savez pas quelque chose, faites un effort pour le découvrir et vous éviterez des problèmes à l'avenir.
Adam Byrtek
@AdamByrtek Non, je ne veux pas dire ça. Ce que je dis, c'est que ce n'est pas toujours au développeur et à l'équipe d'avoir la meilleure compréhension de ce que veut un client. Certains clients ont du mal à expliquer ce qu'ils veulent ou ne savent pas ce qu'ils veulent. Un mauvais code se produit. Des problèmes surviennent dans les projets, de mauvaises exigences à des délais irréalistes. Voilà la réalité. Il n'y a pas de monde parfait où un développeur aura résolu toutes les inconnues, où les clients sont parfaits et les délais précis. Le code généré pour les prototypes est destiné à être rejeté. Mais le codage doit encore se produire.
spong
suite ... Nous ne parlons pas de faire du code de production ou du code final juste avant un check-in. Nous parlons de la façon de nommer quelque chose que nous ne comprenons pas encore tout à fait - pour commencer initialement sur quelque chose qui n'est pas clair pour peut-être une bonne raison (exemple: personne dans l'équipe ne le comprend encore, peut-être pas même le client). Mais les choses doivent encore avancer sur la base de ce qui est connu.
spong
1
@sunpech: Le seul endroit que j'ai vu fooet barutilisé dans le code est de petits extraits de code utilisés pour montrer un concept. Bien sûr, je trébuche aussi quand je pense à des noms, mais je ne me suis jamais retrouvé dans une si mauvaise position où cela fooa été la seule option raisonnable. Si cela devait arriver, je ne sais vraiment pas ce que je fais et je dois retourner à la planche à dessin et au pseudo-code jusqu'à ce que je sache quoi faire.
gablin
5

Cette question et surtout ses réponses me font peur. Quelqu'un va devoir conserver ce code dans lequel vous venez de nommer une variable "Cup", vous savez. Si vous n'êtes pas chanceux, ce sera vous!

Vous avez une variable. C'est une chose. Cela représente une chose, de toute façon. Et les choses ont des noms. Voilà comment vous savez que ce sont des choses! Êtes-vous vraiment en train de me dire que vous devez nommer une chose après une autre parce que vous ne pouvez pas trouver le nom de la chose réelle?

Les itérateurs doivent être appelés i. Les itérateurs imbriqués sont probablement une erreur, mais si vous en avez besoin, parcourez le reste des voyelles, dans l'ordre (a, e, o, u et dieu m'aident, oui, parfois y).

En dehors de cela, il suffit d'appeler la chose telle qu'elle est et d'en finir!

Dan Ray
la source
9
Je dois protester! Il est clair que l'itérateur interne doit être appelé j et celui à l'intérieur de k . Une longue tradition mathématique regarde par-dessus votre épaule!
Frank Shearar
Huh. Je n'ai jamais fait j et k. Je vois que c'est raisonnable, cependant.
Dan Ray
8
L'une des raisons pour lesquelles Dijkstra était si naturel pour l'informatique était que son nom comprenait les trois variables d'itérateur les plus courantes dans le bon ordre.
glenatron
3
@glenatron: Enfin, un moyen de se rappeler comment épeler ce nom!
configurateur
4

Si je n'arrive pas à trouver un grand nom tout de suite, j'utilise un nom "correct" temporairement, puis continue à coder. Au moins, ce sera quelque chose qui décrit correctement l'article, même s'il n'est pas parfait . Presque toujours, lorsque j'aurai fini d'écrire le premier brouillon de ce morceau de code particulier, un nom plus parfait me sera venu à l'esprit. Grâce au processus de codage, mes intentions avec cette variable particulière deviennent plus claires. (D'un autre côté, il m'arrive parfois de penser que la variable to était mal conçue au départ et je la supprime en faveur d'autre chose.)

Nick Spreitzer
la source
3

Je nomme ce que je pense que la fonction devrait faire - quelque chose qui transmet plus ou moins l'intention. Une fois le corps de la fonction écrit, je trouve évident comment l'appeler et revenir en arrière et le renommer si nécessaire.

Adam Lear
la source
1
Cela ne fonctionne pas toujours, surtout lorsque le développeur peut ne pas être familier avec la terminologie ou même l'intention de l'entreprise / industrie. Quelque chose de plus générique et évident devrait être utilisé pour indiquer qu'il doit être défini et modifié ultérieurement. Le PO semble demander quand l'intention est inconnue et ce qui devrait être utilisé initialement . Si la dénomination est quelque chose qui exprime plus ou moins l'intention, alors un bon nom n'est déjà pas loin.
spong
1
@sunpech Sérieusement, même lorsque je commence un travail avec un domaine assez spécifique, je n'ai pas eu de difficulté à trouver un nom de fonction. J'ai peut-être juste besoin d'écrire plus de fonctions. :)
Adam Lear
1
@sunpech: Comment pouvez-vous écrire une fonction sans savoir ce qu'elle fait?
configurateur
4
@sunpech: Je n'ai pas dit ça. Je viens de dire que vous ne pouvez pas écrire une fonction sans savoir ce qu'elle fait. Ce n'est pas possible. Je ne l'ai jamais vu arriver et je ne vois pas comment cela pourrait arriver. Peut-être que je suis stupide, mais quand vous nommez une fonction DoFoo (), qu'est-ce que vous mettez dedans ??
configurateur
2
@sunpech: Je n'ai jamais dit que les noms devaient être «bons» depuis le début. Je n'arrive pas à voir comment vous vous retrouveriez dans une situation où vous voudriez créer une fonction mais vous ne savez pas ce que cela va faire.
configurateur
2

foo et bar . Puisqu'il n'y a pas de sens pour nommer les fonctions / variables pour l'instant, j'utilise une combinaison de Foo et / ou Bar avec tout ce que j'essaie de définir.

Il est plus facile de rechercher / trouver plus tard lorsque j'ai une meilleure compréhension de son nom.

Voir également Foobar sur wikipedia .

Les termes foobar, foo, bar et baz sont parfois utilisés comme noms d'espace réservé (également appelés variables métasyntaxiques) dans la programmation informatique ou la documentation informatique. Ils ont été utilisés pour nommer des entités telles que des variables, des fonctions et des commandes dont le but est sans importance et ne servent qu'à démontrer un concept. Les mots eux-mêmes n'ont aucun sens dans cet usage. Foobar est parfois utilisé seul; foo, bar et baz sont parfois utilisés dans cet ordre, lorsque plusieurs entités sont nécessaires.

éponge
la source
1

Préfixez votre fonction avec quelque chose et donnez-lui un nom optimal pour l'instant. Par exemple, une fonction qui enregistre tous les produits pour l'utilisateur sélectionné dans la base de données pourrait être RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()

HardCode
la source
Bien sûr, dans ce cas, vous devez simplement nommer la fonctionSaveAllProductsForTheSelectedUserToTheDatabase()
configurateur
1

Quoi que j'appelle ces variables difficiles à nommer, je fais un //TODO find a better namecommentaire afin que je puisse y revenir plus tard pour le renommer

Habituellement, lorsque je commence à utiliser la variable / fonction / classe, je trouve un meilleur nom pour eux.

user1041
la source
0

Il est préférable de mettre un bon nom bientôt pendant que vous avez le code en tête, que d'attendre plus tard lorsque vous souhaiterez l'avoir bien nommé!

Jon Onstott
la source
0

Je n'ai presque jamais de problème pour trouver de bons noms descriptifs .. mais parfois la dénomination devient assez redondante, en ce sens que les noms de classe et de variable sont très similaires. WebClient webclient = nouveau Webclient (uri); ...etc.

Zaz
la source
0

Parfois, j'utilise zzzz temporairement.

Une bonne règle pour vous aider est la suivante:

  • Retourne-t-il un booléen et n'a-t-il pas d'effets secondaires: Utilisez ensuite un adjectif (commencer par est, était) mais jamais futur.
  • Retourne-t-il un type différent et n'a-t-il pas d'effets secondaires: utilisez alors un nom.
  • Est-ce qu'il ne renvoie rien mais fait quelque chose: Utilisez ensuite un verbe.
  • Est-ce une classe: utilisez ensuite un nom.
ctrl-alt-delor
la source
-1

Dans le passé, j'utilisais beaucoup Bob , mais ce serait la seule variable mal nommée dans la fonction / le script, car sinon le code devient rapidement illisible.

(bob est la gueule de bois des jours uni - s'en tirer avec les variables d'appel bob et fred)

Je suis heureux d'utiliser i pour un comptoir.

Mieux vaut utiliser des noms significatifs, même s'ils ne sont pas courts et accrocheurs.

Dan
la source
J'ai travaillé avec un gars qui a utilisé des noms comme ça pour ses applications et ses cours dans ses applications. Il va sans dire que son code était généralement très pauvre.
dash-tom-bang
2
@ dash-tom-band: Je pense que son code était généralement très bob.
configurateur
Si je peux travailler mon nom dans une notation hongroise pour une énumération, je le fais habituellement, même si c'est un peu exagéré. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner
-1

Si je ne sais absolument pas comment nommer la variable, ce qui ne s'est pas produit depuis plus de vingt ans ... les noms de vieilles petites amies ou de femmes que j'aurais aimé avoir été petites amies. Le dernier code avec ces identifiants a été retiré de la production il y a quelques années.

David Thornley
la source
-2

WorkMagic ou Abracadabra.

Testeur101
la source
-2

bla , mais seulement temporairement. Je reviens toujours en arrière et je les renomme en bons noms de variables.

Jason Berkan
la source
1
Ne l' utilisez jamais . Pas mal.
Dynamic
-2

Doit (), a (), b (c) xxxx () ....

Bien sûr, ils sont refactorisés ... généralement

Preet Sangha
la source
-3

J'ai tendance à utiliser des trucs sur mon bureau.

  • Coupe
  • Alt
  • Foo
  • b / a / c (junk simple lettre)
  • alk (ordure à plusieurs lettres prononçable)

Je penche également pour les noms génériques (pour les fonctions au moins):

  • échanger
  • processus
  • reviseVar
  • bricoler

C'est pour des trucs temporaires cependant. Je jure que rien n'entre dans le référentiel, encore moins la production.

...

Josh K
la source
Je me sens toujours sale, mais parfois le nom le plus apparent pour une méthode est "Go" ou "DoIt". Chaque fois que je peux trouver un meilleur nom que je fais, mais parfois c'est vraiment "faire le travail que le nom du programme implique est sur le point de se produire." Cependant, cela est trop long à utiliser pour un nom de fonction. :)
dash-tom-bang
@ dash-tom-bang: Pour une raison quelconque, runsemble beaucoup mieux que go. C'est peut-être parce que nous aimerions tous que nos programmes soient plus rapides.
configurateur