Le code se lit bien plus souvent qu’il ne s’écrit. Pourtant, nombreux sont les développeurs qui négligent l’un des aspects les plus importants de la lisibilité : le nommage des variables. Un mauvais nom de variable peut transformer un code simple en énigme indéchiffrable, tandis qu’un bon nom documente instantanément l’intention du développeur. Maîtriser l’art du naming est une compétence qui distingue le code professionnel du code amateur.
Sommaire
Les erreurs classiques qui sabotent votre code
Les variables mal nommées sont partout, et leurs conséquences se font sentir quotidiennement dans les projets logiciels.
Les noms trop courts comme x, tmp, data ou info ne transmettent aucune information utile. À moins de travailler dans un contexte mathématique où x et y ont un sens établi, ces noms forcent le lecteur à remonter le contexte pour comprendre ce que contient la variable. Une variable nommée userEmail est infiniment plus parlante que str ou s.
À l’opposé, les noms trop longs deviennent laborieux à manipuler. Une variable comme listOfAllActiveUsersWhoHaveCompletedTheirProfileAndAcceptedTerms est certes descriptive, mais épuisante à utiliser. Cherchez l’équilibre : activeVerifiedUsers capture l’essentiel sans verbosité excessive.
Les abréviations cryptiques sont un autre fléau. Évitez usrMgr, btnSubmit ou calcTtl à moins que ces abréviations ne soient des standards reconnus dans votre domaine. Le temps que vous économisez en tapant est perdu cent fois quand quelqu’un essaie de comprendre votre code.
Révéler l’intention plutôt que l’implémentation

Un bon nom de variable communique pourquoi elle existe, pas simplement ce qu’elle contient techniquement.
Comparez elapsedTimeInDays versus daysSinceCreation. Le premier décrit le type de donnée, le second révèle l’intention métier. De même, préférez isEligibleForDiscount à flag ou status. Votre code doit raconter une histoire que même un non-développeur pourrait suivre.
Les noms booléens méritent une attention particulière. Préfixez-les avec is, has, can, should pour clarifier qu’il s’agit de conditions : isActive, hasPermission, canEdit, shouldNotify. Un nom comme enabled laisse place à l’ambiguïté, tandis que isEnabled indique clairement une valeur vraie ou fausse.
Pour les fonctions, privilégiez les verbes : calculateTotal(), sendEmail(), validateInput(). Le nom doit annoncer l’action que la fonction accomplit. Une fonction qui retourne une valeur booléenne peut adopter la même convention que les variables : isValid(), hasAccess(). Pour accéder à plus d’infos, cliquez ici.
Respecter les conventions de votre écosystème
Chaque langage et chaque framework possède ses propres conventions de nommage. Les ignorer crée une dissonance cognitive qui ralentit la lecture.
En JavaScript, la convention camelCase domine : firstName, calculateTotalPrice. En Python, on privilégie le snake_case : first_name, calculate_total_price. Les constantes s’écrivent généralement en SCREAMING_SNAKE_CASE : MAX_RETRY_ATTEMPTS, API_BASE_URL.
Les classes suivent généralement la convention PascalCase : UserManager, PaymentProcessor. Cette cohérence visuelle permet d’identifier instantanément le type d’entité auquel on a affaire en lisant le code.
Respecter ces conventions n’est pas du purisme, c’est du professionnalisme. Quand vous rejoignez une équipe ou contribuez à un projet open source, adaptez-vous aux standards en place plutôt que d’imposer vos préférences personnelles.
Le contexte change tout
Un nom pertinent dans un contexte peut devenir redondant ou ambigu dans un autre. La clé est d’adapter le niveau de précision au scope de la variable.
Dans une fonction calculateUserDiscount(), une variable locale peut simplement s’appeler discount sans ambiguïté. Mais au niveau d’une classe ou d’un module, vous aurez besoin de userDiscount ou appliedDiscount pour éviter les confusions.
Les variables de boucle constituent un cas particulier. Dans une boucle simple et courte, i, j, k restent acceptables par convention. Mais dès que la boucle se complexifie, préférez des noms descriptifs : userIndex, categoryId. Si votre boucle fait plus de cinq lignes, les noms courts deviennent problématiques.
Les paramètres de fonction doivent être particulièrement clairs car ils constituent le contrat entre l’appelant et la fonction. Un paramètre nommé value est trop vague, tandis que emailAddress ou totalAmount communique clairement ce qui est attendu.
Les noms évoluent avec le code
Le refactoring des noms est une pratique essentielle mais souvent négligée. Quand votre compréhension du domaine évolue, vos noms de variables doivent suivre.
Une variable initialement nommée price peut devoir devenir priceBeforeTax quand vous ajoutez la gestion de la TVA. Ne laissez pas les anciens noms persister par paresse, ils créent une dette technique sémantique qui s’accumule.
Les IDE modernes rendent le renommage trivial avec leurs fonctionnalités de refactoring automatique. Utilisez-les sans hésitation. Un bon nom révélé par une meilleure compréhension mérite d’être appliqué rétroactivement à toute la codebase.
Certains noms révèlent aussi des problèmes de conception. Si vous peinez à nommer une variable ou une fonction, c’est peut-être que son rôle n’est pas clairement défini. Une difficulté de nommage est souvent le symptôme d’une responsabilité mal délimitée ou d’une abstraction confuse.
Le nommage n’est pas une préoccupation superficielle ou esthétique. C’est un acte de communication fondamental qui détermine si votre code sera compréhensible dans six mois, par vos collègues, ou même par vous-même. Investir du temps pour choisir des noms clairs, descriptifs et cohérents est l’une des meilleures façons d’améliorer la qualité de votre code. Comme le disait Phil Karlton : « Il n’y a que deux choses difficiles en informatique : l’invalidation de cache et nommer les choses. »