IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Quels sont les pires noms de variables que vous avez déjà vus ?


Sujet :

Débats sur le développement - Le Best Of

  1. #161
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 429
    Points : 24 794
    Points
    24 794
    Par défaut
    Difficile dans l'absolu de dire qu'un nom de variable est mauvais !
    Tout dépend aussi de la portée de la variable, je suis plutôt POO donc locale, membre d'instance, membre de classe, et parfois globale
    Le thème de la fonction, sa complexité (si tu as 2-3 variables, un nom très court ça peu se comprendre, si tu en as 26 évidemment A..Z c'est pas terrible)
    On voit cela souvent avec le SQL, les alias de table pour raccourcir la requête avec T1 à T10, hyper lisible !

    Toto, un classique pour tester un code vite fait, comme Foo Bar !
    Une fois que l'on sait bien utiliser la fonction, on refait au propre ! non ?

    Moi, j'adore les fautes d'orthographe comme requette
    Après, tu te traines ça comme nom de variable un peu partout !
    Pratique lorsque tu cherche un truc, et qu'il y a pas une seule fois la même chose Req, Requete, Rqt, ...

    Pour ma part, j'essaye d'avoir des fonctions assez courte et des variables nommées à part i pour mes for
    Dès que j'ai deux compteurs imbriqués (assez rare), je le nomme plus longuement pour ne pas les confondre !
    J'ai aussi un cartouche de documentation

    J'évite des variables au nom trop court (même si cela peut rendre le code plus concis), j'ai souvent vu des variables comme _t pointant sur l'objet global Translator ! personnellement, je ne suis pas fan !
    Typique aussi avec des MACRO

    Pour les préfixes façon notation hongroise, je les réserve aux appels des API Windows, tout simplement parce que j'utilise les noms des paramètres de la fonction et donc que je ne les invente pas !
    En général, en Delphi\C++Buider, je respecte juste
    T pour Type (C pour une classe C++ pure et non Delphiesque)
    A comme Arguments pour un paramètre de fonction,
    F pour Field indiquant un membre privé\protégé équivalent au m_
    C'est la convention historique de Borland Delphi
    Je n'en vois pas d'autre

    Pour mes objets, j'ai la tendance à être très verbeux, tout le monde n'aime pas comme TShaiORPersistentClassMetaDataItem,
    TShaiHardwareProviderAbstractPersistentObject ou un des mes derniers TShaiCameraActionByComputerItemList.
    Shai étant en réalité, le nom du projet ou de la lib interne

    l'ancien programmeur était plus concis TObjetItem, TPlan, TLstItems en même temps, le code n'était pas très POO, au grand max 30 classes dans tout le projet, j'ai du en écrire 300 de plus

    J'ai plein de petite classe avec une tache bien précise, je découpe beaucoup, et donc il faut trouver beaucoup de nom, parfois j'ai peu de mal, j'ai même abusé

    Je fais aussi du Franglais !

    TFacture.GetClient ou TFacture.GetLigneDeCommande,
    au lieu de GetCustomer ou Get... je sais pas comment on dit Ligne de Commande d'une Facture en anglais ? TBill.GetDetailOrder ???

    Manque de vocabulaire, et après, si personne ne comprend ou que moi-même, j'oublie, c'est une perte de temps de traduire !

    Quand tu n'as pas de spécifications, pas de règle de codage, et une transmission à 99% oral, c'est un sport d'avoir un code métier lisible et compréhensible subissant les changements de besoins et de fonctionnalités en cours de développement
    Alors si on en plus on se permet de délire comme ce qui suit.

    Donc, le pire, mais aussi le plus drôle (l'auteur ne supportait plus le projet ni la responsable, sa petite vengeance).
    Extrait d'un code dont j'ai subi la maintenance par la suite :

    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TCensure.ConstruireQui(OleTypes, OleValeurs : OleVariant; ModeOU : Boolean) : String;
    var i, NbDim : integer;
        Operateur_OuiIciTank, jointhuuuure : String; //c'est matrix voyons !!!
        LeTextounet, leFromTon, LeTe : String;

    Voilà, des jeux de mots avec le vocabulaire SQL et des références à des films !
    Ou ce code qui exprime de la mauvaise humeur du même développeur

    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //comme son nom l'indique !!!
     
    Function TCensure.ConvSaloperieAChierDePutainDeMerde(Per_ID : Integer) : Integer;
    begin
      ReqDeMerdeAChier.close;
      ReqDeMerdeAChier.parambyname('PER_Id').asinteger := Per_Id;
      ReqDeMerdeAChier.open;
      result := ReqDeMerdeAChier.fieldByName('TER_ID').asinteger;
      ReqDeMerdeAChier.close;
    end;



    J'avoue, j'ai récemment aussi fait une référence à un jeu vidéo de MegaDrive :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      bool TShaiCameraRecordingByDirect::AddExtraTime(TSeconds ATimeBonus = -1); // Tribute to Wiz 'n' Liz !
    Cela reste sobre et le nommage correspond à la fonctionnalité souhaité, ajouter du temps supplémentaire à un enregistrement automatique déjà en route !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  2. #162
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Le pire est lorsque tu te retrouves avec une tonne de variable (je parles du VB.NET) qui sont pas changées (TextBox34) et ça peut allé très loin ...

    Je ne dirais pas que c'est moi Je trouve ça horrible mais je continu ...

  3. #163
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut $res
    Pour ma part, le pire que j'ai vu est un nom de variable utilisé un peu partout dans les tests unitaires de mon projet : $res !

    Comme son nom l'indique : une variable utilisée pour stocker les résultats d'une méthode testée.

    Aucune idée sur le type de résultat retourné, sur le cas testé ou autre. J'ai eu beau me battre pour que ce genre de variable disparaisse et pourtant il est toujours autant utilisé

  4. #164
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 653
    Points : 3 773
    Points
    3 773
    Par défaut
    Citation Envoyé par bilbonec Voir le message
    Pour ma part, le pire que j'ai vu est un nom de variable utilisé un peu partout dans les tests unitaires de mon projet : $res !

    Comme son nom l'indique : une variable utilisée pour stocker les résultats d'une méthode testée.

    Aucune idée sur le type de résultat retourné, sur le cas testé ou autre. J'ai eu beau me battre pour que ce genre de variable disparaisse et pourtant il est toujours autant utilisé
    Si le code (ou le test) en question est bien documenté et/ou bien commenté, on comprend aisément ce que "res" contient. Le nom de la variable n'est donc pas à remettre en cause.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  5. #165
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 35
    Points : 134
    Points
    134
    Par défaut
    Le pire que j'ai fait, à un prof que j'aimais pas !
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class _{
        private int __;
     
        public _(int ___){
            __ = ___;
        }
     
        public int guessWhatImDoing(){
            if(__<=0)return 1;
            _ ____=new _(___()-1);
            return ___()*____.guessWhatImDoing();
        }
     
        public int ___(){
            return __;
        }
    }
    He ben après ça il m'aimait pas non plus ! ahahaha

    PS : c'est une factorielle volontairement compliquée !

  6. #166
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Mieux vaut parfois imposer au (re)lecteur de remonter dans le code que de perdre du temps à rédiger des variables dont les noms chambouleraient la remise du prix Goncourt.
    Most Valued Pas mvp

  7. #167
    Membre chevronné

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Mentaliste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par bilbonec Voir le message
    Pour ma part, le pire que j'ai vu est un nom de variable utilisé un peu partout dans les tests unitaires de mon projet : $res !

    Comme son nom l'indique : une variable utilisée pour stocker les résultats d'une méthode testée.

    Aucune idée sur le type de résultat retourné, sur le cas testé ou autre. J'ai eu beau me battre pour que ce genre de variable disparaisse et pourtant il est toujours autant utilisé
    Euh moi j'ai presque toujours une variable nommée "$result" qui est le retour. Mes fonctions ne dépassent jamais 100 lignes de code, donc peut être que je n'ai pas besoin de savoir ce qu'il y a dedans. Et puis c'est en Php, donc très faiblement typé, on peut mettre n'importe quel type dans une variable. Donc ce que tu dis ne convient pas forcément.
    .I..

  8. #168
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par SurferIX Voir le message
    . Et puis c'est en Php, donc très faiblement typé, on peut mettre n'importe quel type dans une variable. Donc ce que tu dis ne convient pas forcément.
    ça n'a pas grand chose à voir...

    Si le nom de la fonction est clair, il est alors totalement compréhensible dans tous les cas d'appeler "res" le retour, si on ne s'en sert que là..

    C'est sûr que si on a "res1", "res2, .. res100", là c'est une faute grave.. et impossible à lire...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #169
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 83
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ça n'a pas grand chose à voir...

    Si le nom de la fonction est clair, il est alors totalement compréhensible dans tous les cas d'appeler "res" le retour, si on ne s'en sert que là..

    C'est sûr que si on a "res1", "res2, .. res100", là c'est une faute grave.. et impossible à lire...
    Avec une fonction unitaire de moins de 30 lignes ça peut passer en effet, mais de façon globale, on est toujours gagnant a bien nommer une variable...

  10. #170
    Membre chevronné

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Mentaliste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    ça n'a pas grand chose à voir...
    Si, parce que dans la conversation, des personnes parlaient du fait qu'en fonction du type intrinsèque de la variable, le nom pouvait être explicite (intXXX = entier, strXXX = chaine etc), alors qu'en Php comme c'est faiblement typé, ce principe ne s'applique plus, donc tu ne peux pas faire (intRetour = entier, strRetour = chaine etc), ce qui pourrait être un indice supplémentaire pour aider à comprendre.

    Citation Envoyé par deuz59 Voir le message
    Avec une fonction unitaire de moins de 30 lignes ça peut passer en effet, mais de façon globale, on est toujours gagnant a bien nommer une variable...
    Si, dans toutes tes fonctions qui renvoient quelque chose, pour chaque fonction, tu as :

    - une variable nommée "$result" ;
    - tes fonctions sont courtes.

    Alors, tu sais que c'est là que sera forcément le résultat de retour. Le nom de la fonction doit suffire à lui tout seul.

    Exemples concrets (pris de deux fichiers différents) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
        public function translateDate(
            $date_time,
            $format = 'date_time_format_long_sans_annee',
            $first_upcase=true
        ) { 
            switch ($this->_trad->getLang()) {
                /* (!!) RAF pour l'anglais */
                case 'cn':
                    /* Code pour le jour où je le ferai en Chinois */
                    break;
    
                default:
                    /* Traduction date en français */
                    $jour = $this->_trad->get(
                        self::$_TabStrDaysOfWeek[ $date_time->format('w') ]
                    );  
                    $mois = $this->_trad->get(
                        self::$_TabStrMonths[ $date_time->format('n') ]
                    );  
                    $retour = sprintf(
                        $date_time->format(
                            $this->_trad->get($format)
                        ),  
                        $jour,
                        $mois
                    );  
                    if ($first_upcase) {
                        $retour = ucfirst($retour);
                    }   
                    break;
            }   
            return $retour;
        }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        public function queryManyValues(
            $sql,
            $tab,
            $type_fetch=PDO::FETCH_BOTH,
            $debug=false,
            $debug_console=false,
            $debug_maxlen=false
        ) { 
            if ($debug) {
                $this->_queryDump($sql, $tab, $debug_console, $debug_maxlen);
            }   
            $stmt = $this->execQuery($sql, $tab);
            $retour = $stmt->fetch($type_fetch);
            return $retour;
        }
    Désolé mais si le type ne comprend pas à quoi sert "$retour", là, je ne peux vraiment plus rien pour lui. Ah si la documentation. Toutes mes fonctions sont documentées. Exemple pour la fonction précédente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        /**
         * Exécution d'une requête et renvoi du résultat, afin de
         * pouvoir lire plusieurs champs
         *
         * @param string $sql           Requête à exécuter
         * @param array  $tab           Paramètres à passer à la requête
         * @param string $type_fetch    Type de résultat de retour :
         *                              PDO::FETCH_BOTH (défaut):
         *                              retourne un tableau indexé
         *                              par les noms de colonnes
         *                              et aussi par les numéros de
         *                              colonnes, commençant à
         *                              l'index 0, comme retournés
         *                              dans le jeu de résultats
         * @param bool   $debug         Si on affiche une trace
         *                              de debug
         * @param bool   $debug_console Si le debug de retour est
         *                              pour une console
         * @param bool   $debug_maxlen  Si le debug de retour est
         *                              pour une console, on peut
         *                              préciser la longueur max
         *                              par ligne
         *
         * @return integer Nombre d'enregistrements affectés par la requête
         */

    Et là vraiment, vraiment... si la personne ne comprend pas à quoi sert "$retour", là, je ne peux vraiment plus rien...
    .I..

  11. #171
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 83
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par SurferIX Voir le message

    Si, dans toutes tes fonctions qui renvoient quelque chose, pour chaque fonction, tu as :

    - une variable nommée "$result" ;
    - tes fonctions sont courtes.

    Alors, tu sais que c'est là que sera forcément le résultat de retour. Le nom de la fonction doit suffire à lui tout seul.
    Cela peut en effet passer avec une troisième condition :
    - le nom de tes fonctions est précis et compréhensible


Discussions similaires

  1. JO de Sotchi : quels sont les pires commentateurs ?
    Par Bovino dans le forum Sports
    Réponses: 3
    Dernier message: 21/02/2014, 15h51
  2. Quel est le pire bout de code que vous ayez jamais écrit ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 61
    Dernier message: 31/10/2011, 13h18
  3. Modélisation : quels sont les livres que vous recommandez ?
    Par TheLeadingEdge dans le forum Modélisation
    Réponses: 3
    Dernier message: 26/08/2008, 10h11
  4. Réponses: 70
    Dernier message: 23/08/2007, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo