Conventions nominatives


Lorsque l'on crée des variables, des classes ou des fonctions, il est de la responsabilité du programmeur de faire en sorte que les noms (ou identificateurs) qu'il utilise soient assez explicites pour que le lecteur comprenne quelque chose. Bien sûr, rien n'interdit de créer une fonction f() qui renvoie le double du paramètre, ou une fonction g() qui imprime un texte à l'écran. Cependant, personne n'y comprendra rien, et encore moins vous même si vous relisez votre programme un an plus tard. Les commentaires sont là pour mieux comprendre le programme, mais si les noms de variables et de fonctions sont bien choisies (c'est-à-dire si le nom reflète bien le rôle de l'objet en question dans le programme), on peut s'en passer, et le programme devient encore plus facile à lire. Il est donc important de bien choisir ses identificateurs, et ceci nécessite dans un premier temps qu'ils soient valides.

Règles

Il y a un certain nombre de règles à respecter pour les identificateurs:

  • La longueur de l'identificateur est arbitraire
  • L'identificateur ne peut contenir que des chiffres et des lettres (le caractère "_" compte comme une lettre)
    • Aucune ponctuation n'est accéptée
    • Il ne peut pas y avoir d'espaces
    • Les accents ne sont pas accéptés
  • Minuscules et majuscules sont différentes
  • Le premier caractère doit être une lettre
  • Tous les caractères sont significatifs

Voici une liste d'identificateurs corrects:

Voici une liste d'identificateurs non corrects:

La variable max est différente de la variable Max.

Les mots clés présentés dans l'index sont réservées au C++ et ne peuvent pas être utilisés autrement. Les identificateurs commençant par "__" (double "_") sont réservés à l'implémentation C++ et aux librairies standard et ne devraient pas être utilisés.

Conventions

Ici, je vais vous exposer quelques règles pour choisir vos identificateurs. Vous n'êtes absolument pas obligés de les suivre, d'autant plus que ce n'est vraiment qu'une histoire de goût, mais je pense que ça permettra de rendre vos programmes plus clairs pour tous.

Commençons par choisir des identificateurs explicites. Regardez le programme qui suit : il est écrit deux fois. Essayez de comprendre ce qu'il calcule dés la première version. Avec la seconde version, vous verrez que c'est tout de suite plus clair.

#include <iostream.h>
main()
{

    double a = 12;
    double b = 4;
    double c = a * b;
    cout << c << "\n";

}

Vous avez deviné à quoi correspondent a, b et c? Regardez plutôt ceci:

#include <iostream.h>
main()
{

    double longueur = 12;
    double largeur = 4;
    double aire = longueur * largeur;
    cout << aire << "\n";

}

Avouez que ça prend tout son sens : on calcule l'aire d'un rectangle. Mais avec ce même calcul on aurait pu calculer des tas de grandeurs différentes (prix à payer, poids d'un ensemble d'objets...)!

Ensuite, un identificateur peut représenter plusieurs mots. Imaginons qu'on ait deux variables représentant respectivement la valeur maximale d'une certaine valeur et sa valeur minimale. On veut donc marquer la relation avec la valeur, et marquer la différence entre min et max. On peut alors faire quelque chose comme ceci: valeurMin et valeurMax. Vous voyez que le nom de mes variables commencent par une minuscule, et chaque nouveau mot est marqué par une majuscule (c'est le principe de l'identificateur ceciEstUneVariable... montré en exemple plus haut). Cependant, c'est une convention personnelle. D'autres préfèreront écrire valeur_max et valeur_min. Personellement, je n'aime pas cette notation, car elle alourdit le texte (c'est moins élégant, il y a moins de classe, mon nom est Bond, James Bond). Vous ne verrez donc que ma convention dans les programmes de ce cours.

Il existe une convention qui consiste à mettre au début de chaque identificateur une lettre précisant le type de cet identificateur. On obtient des choses comme iCompteur, dCoefficient, szMonNom (représentant resectivement un int, un double et un string terminé par un zéro ou caractère nul). Je n'aime pas nom plus cette convention. Sachez cependant qu'elle est largement utilisée dans les définitions des librairies standard pour Windows, il est donc bon de les connaître.

Les classiques

Il existe toutefois des nombres qu'on représente traditionellement par une seule lettre. Ces nombres sont les compteurs (i, j ou k), les pointeurs si il n'y en a qu'un (p). n représente la plupart du temps un entier, x et y des réels (souvent des coordonnées dans repère). Je ne vous conseille cependant pas d'utiliser d'autres variables de ce type, pour les raisons exposées précédemment.

Voilà concernant les conventions nominatives pour les identificateurs. J'espère qu'après ceci vous saurez vous-même trouver des noms de variables et de méthodes explicites. La pertinence des noms de variables en dit long sur la compétence du programmeur. Qu'on se le dise!