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 :mouarf:
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 :aie: !
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 :aie:
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:
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:
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 :
Cela reste sobre et le nommage correspond à la fonctionnalité souhaité, ajouter du temps supplémentaire à un enregistrement automatique déjà en route !Code:bool TShaiCameraRecordingByDirect::AddExtraTime(TSeconds ATimeBonus = -1); // Tribute to Wiz 'n' Liz !