JeuWeb - Crée ton jeu par navigateur
Le pire nom de variable ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Général (https://jeuweb.org/forumdisplay.php?fid=36)
+--- Forum : Blabla (https://jeuweb.org/forumdisplay.php?fid=42)
+--- Sujet : Le pire nom de variable ? (/showthread.php?tid=6090)

Pages : 1 2 3


RE: Le pire nom de variable ? - Viciousity - 21-04-2012

(20-04-2012, 10:39 PM)supermeganono a écrit : Je ne saurai vraiment pas donné de tête un seul nom d'une mes variables. En effet le nom n'as aucun importance pour moi, l'IDE m'affiche en surbrillance la variable que je travail, que je recherche ou que je sélectionne. Bref je trie visuellement sans les lires.

Je ne vais pas critiquer ta manière de coder, loin de là, mais le problème en opérant de cette manière c'est si jamais tu dois commencer à coder en groupe. En effet, tout le monde n'a pas le même IDE et la lisibilité du code devient donc crucial ^^

En plus, selon moi, le code doit pouvoir être compris pas n'importe qui le lirait et cela passe par la définition clair et expressive de tes variables Smile


RE: Le pire nom de variable ? - supermeganono - 22-04-2012

Oui mais je n'ai jamais travaillé en groupe. Je m'adapterai le jour ou je le devrai.
Puis j’essaie de rester simple par rapport à ce que je fait. Jusqu'à maintenant les gens qui m'aident ne sont jamais trop plein ^^ Bien qu'ils doivent se marrer parfois ^^


RE: Le pire nom de variable ? - Roworll - 22-04-2012

Une variable à la con trouvée une fois dans un programme comptable réalisé par un collègue.
orangina_recoit_vrai
Collègue disparu depuis deux ans, pas de docs, une logique assez spécieuse pour assigner et utiliser la variable.

J'en viens à me demander avec le recul si je n'aurais pas préféré une variable avec un nom générique.


RE: Le pire nom de variable ? - Th3kid - 23-04-2012

Le nom des variables a parfois assez peu d'importance tant que ca reste lisible!

Prenons deux exemples pour que ca soit plus clair


function lancerAction(){
$tmp= requete SQL SELECT action_terminee FROM Action WHERE id =?;
switch($tmp["action_terminee"]){
case a : dormir();
case b : manger();
case c : boire();
}
}

Ici la variable "tmp" est lisible directement sur l'ecran, même si on ajoute quelques lignes, on pourra toujours savoir qu'on travail ici avec data et ce qu'elle contient.
Cela ne gêne en rien la lecture du code.

Je l'aurais même appelée a ou i ou aze, c'est juste une variable de transition.

Par contre effectivement dans un code comme un combat entre deux perso par exemple;
La il pourrait y avoir une dizaine de variable différente qui interviendrait et la le nom des variables devient clairement importante pour la lecture.

En plus actuellement je refais une formation de développeur, je discute beaucoup avec le prof car j'ai maintenant de l'expérience pour parler avec lui. Il m'a signalé par exemple que les meilleurs fonctions n'ont pas plus de 30lignes. Dans ce cas,je pense,qu'une variable interne doit juste avoir un nom répétitif plutôt qu'un nom qui a du sens.

Si pour les boucles vous appelez votre variable i, le faire a toute les boucles, des la premier lecture de (for i=0;i<fin<i++) on aura compris que i sert a parcourir la boucle. Pourquoi l'a peller compteurBoucle ? En plus si le même mécanisme est tjs utilisé, des qu'on lira plus loin dans un autre chose la variable i, on pourra reconnaitre une boucle.

Une autre chose aussi pour les variables. Je prend un simple exemple connu de tous. Ce n'est pas parce qu'on voit des variables qui s'apelle a,b,c,d que forcément c'est mauvais!

Voici un début exemple connu! Je vous laisse retrouver ce qui se cache derrière le XXXXXXXXXX
Code :
function(){var l=this,g,y=l.XXXXXXXXXX,p=l.$,o=l.XXXXXXXXXX=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}...



Ps : nous avons déjà eu ce débat non ? Un truc genre ca. C'est pareil pour moi :p


RE: Le pire nom de variable ? - Sephi-Chan - 23-04-2012

Je trouve ton premier exemple foireux car le nom était tout trouvé : celui de la colonne. Edit : Mais comme Niahoo, je pense que le nom de la colonne est mauvais.
Certains noms comme i sont largement admis dans le cadre d'une boucle.
Quant à l'exemple en Javascript, c'est un code minifié : c'est un compilateur qui a renommé les variables.

La plupart de les méthodes n'excèdent pas 5 lignes. Les plus complexes dépassent rarement 20.


RE: Le pire nom de variable ? - niahoo - 23-04-2012

(23-04-2012, 01:26 AM)Th3kid a écrit :
Code :
function lancerAction(){
  $tmp= requete SQL SELECT action_terminee FROM Action WHERE id =?;
  switch($tmp["action_terminee"]){
  case a : dormir();
  case b : manger();
  case c : boire();
  }
}

Alors, j'essaie de comprendre ce que fait cette fonction. donc on récupère une action via un id. Comme c'est la table action, je suppose que la colonne id identifie l'action.

Donc que peut bien représenter 'action_terminée' ? « $tmp » me suggère que c'est un timestamp, mais ce ne serait pas logique, puisque stocker dans la table Action le timestamp de fin de l'action impliquerait qu'une seule entité peut accomplir cette action.

Donc, c'est peut être un id d'action suivante, ce qui expliquerait le switch en dessous. selon l'action qui vient de se terminer on en lance une autre. Donc on ne peut dormir qu'après avoir mangé par exemple. Mais dans le cas la colonne est mal nommée.

En tout cas la variable ne m'aide absolument pas à savoir ce que ça peut-être, (je me doute bien que un '$tmp' c'est un genre de buffer sauf que là ça peut laisser un doute sur une notion de temps.)

Donc ton exemple n'est pas si parlant qu'on le voudrait.


RE: Le pire nom de variable ? - Ter Rowan - 23-04-2012

moi je me dis que "action_terminée" porte le type d'action (méthode/fonction) à lancer lorsque l'action est terminée

du coup, c'est plus la colonne en base de données qui est mal nommée (action_terminée pour moi c'est "oui" ou "non" donc un booléen et pas a, b, c, ...)


RE: Le pire nom de variable ? - Th3kid - 24-04-2012

Haha vous me faites rire, enfin bon. La on parlait des variables qui récupère quelque chose pas de la pertinence du nom d'un champ dans une base de donnée ( la encore vous avez juste le nom du champ choisi donc pas d'indication non plus). J'avoue que j'aurais du mettre action! Et pour le switch dsl j'ai abrégé un peu trop le code semblerait! On parle pas de la manière de coder mais bien du nom de la variable non ? Elle récupère un nom de donnée clairement identifiable lui ( même si oui ici il n'est pas bien choisis, mais c'est du code simplifié! ( dsl pas de break pas de " pas de sql query ou autre) Vous avez compris ou j'voulais en venir vous cherchez juste a chipoter!

Et pour le code Jquery, oui c'est minifié mais cela arrive souvent de se retrouver avec des codes pareils ( Oui on m'a déjà demandé de modifier ce genre de code sans me filer l'original ... ) donc faut parfois relativiser sur le nom des variables et pas dire forcément c'est mal puis que ca existe aussi et que c'est utilisé!


RE: Le pire nom de variable ? - Sephi-Chan - 24-04-2012

(24-04-2012, 12:26 AM)Th3kid a écrit : La on parlait des variables qui récupère quelque chose pas de la pertinence du nom d'un champ dans une base de donnée ( la encore vous avez juste le nom du champ choisi donc pas d'indication non plus). J'avoue que j'aurais du mettre action! Et pour le switch dsl j'ai abrégé un peu trop le code semblerait! On parle pas de la manière de coder mais bien du nom de la variable non ? Elle récupère un nom de donnée clairement identifiable lui ( même si oui ici il n'est pas bien choisis, mais c'est du code simplifié! ( dsl pas de break pas de " pas de sql query ou autre) Vous avez compris ou j'voulais en venir vous cherchez juste a chipoter!

Merci de ne pas conclure qu'on chipote parce qu'on réfute ton assertion.

On t'explique que dans ton cas il aurait été plus pertinent de nommer ta variable autrement. Alors certe, ça n'est pas illisible, mais ça ne t'aurait pas coûté plus cher d'utiliser un nom approprié et ça aurait été plus lisible encore.

Regarde ce fragment de code :


tmp = User.find(42).role

case tmp
when 'administrator'
do_something
when 'moderator'
do_something_else
else
do_nothing
end

Tu réalises le non-sens ? Pourquoi nommer la variable tmp alors que role ou user_role a plus de sens ?

En faisant ça, j'ai occlulté inutilement de l'information. Comme toi quand tu fais :

$tmp= requete SQL SELECT action_terminee FROM Action WHERE id =?;

Ici, tu sais que tu récupères la valeur de la colonne action_terminee, donc autant appeler la variable de la même façon. C'est tout de même plus clair que tmp.


En somme, ce n'est pas ton utilisation d'une variable mal nommée qui rend ton exemple de code mauvais : c'est le mauvais nommage de la colonne (qui est sujet à trop d'interprétations possibles).


(23-04-2012, 01:26 AM)Th3kid a écrit : Et pour le code Jquery, oui c'est minifié mais cela arrive souvent de se retrouver avec des codes pareils ( Oui on m'a déjà demandé de modifier ce genre de code sans me filer l'original ... ) donc faut parfois relativiser sur le nom des variables et pas dire forcément c'est mal puis que ca existe aussi et que c'est utilisé!

Désolé mais non. On édite des fichiers propres et on utilise un outil pour packager (réunir plusieurs fichiers en un seul) et minifier (le rendre le plus court possible) lors du déploiement. En aucun cas un développeur devrait modifier du code minifié : ça n'a aucun intérêt.


RE: Le pire nom de variable ? - niahoo - 24-04-2012

On chipote pas. Quand tu donnes un exemple, débrouilles toi pour qu'il signifie quelque chose. On a bien vu que la syntaxe de ton switch/case était simplifiée, on n'a pas fait de remarque là dessus.

Sauf que tu aurais du prendre un exemple ou on voit clairement ce que contient ta variable au nom arbitraire. dans le cas présent, on ne voit pas ce que ça contient. Certes, on voit que ça contient l'info d'une colonne de la table action mais à cause du nommage des tables/colonnes ben c'est vraiment flou.