Qu’est-ce que la notation hongroise et dois-je l’utiliser?
Une citation célèbre dans les cercles de programmation est la suivante:
Il n'y a que deux choses difficiles en informatique: l'invalidation du cache et la dénomination des choses.
La notation hongroise est un système qui tente de faciliter un peu la dénomination des choses. Vous pouvez rencontrer la notation hongroise lors de l'exploration d'une base de code existante. Vous pourriez avoir un collègue qui aime particulièrement l'utiliser. Mais qu'est-ce que c'est et à quoi ça ressemble? Et devriez-vous vraiment l'utiliser?
Qu'est-ce que la notation hongroise?
La notation hongroise est une convention sur la dénomination des identifiants. Elle s'applique principalement à la dénomination des variables, mais elle peut également couvrir la dénomination des fonctions. La notation est une tentative de formaliser la façon dont le nom d'une variable peut indiquer son type ou son objectif.
En utilisant la notation hongroise, les noms de variables commencent tous par un groupe de lettres avec une signification convenue. Ces lettres sont généralement une abréviation pour le type de variable. Par exemple, la lettre l peut représenter un entier long. L'abréviation str représente une chaîne.
Est-ce vraiment hongrois?
Oui, la notation hongroise a en effet été inventée par un hongrois! Charles Simonyi était un employé de Microsoft lorsqu'il a inventé le terme. Il était programmeur dans l'entreprise, travaillant sur des logiciels d'application.
Contrairement à la plupart des autres langues occidentales, les noms hongrois classent le nom de famille en premier, suivi du prénom. Le terme notation hongroise peut faire référence à ce fait, ou il peut simplement s'agir d'une heureuse coïncidence. Cela aurait pu être plus naturel pour Simonyi à cause de sa langue maternelle.
À quoi cela ressemble-t-il?
Plutôt que de nommer une variable simplement l' âge , la notation hongroise inclut un préfixe représentant le type de cette variable. Par exemple, en C, un programmeur peut déclarer une telle variable comme suit:
int iAge;
Notez que, comme C est un langage fortement typé, le préfixe i est redondant au point de déclaration. Cependant, lors de l'utilisation ultérieure de la variable, le préfixe s'avère utile:
printf("I am %d years old", iAge);
Le préfixe nous rappelle que nous utilisons le bon type de variable.
Dans un langage faiblement typé, tel que PHP, les variables peuvent adopter différents types en fonction de la valeur qu'elles détiennent. La notation hongroise est donc potentiellement plus utile:
$iAge = 21;
Voici quelques exemples supplémentaires d'un schéma de notation hongrois courant:
Préfixe | Taper | Exemple |
---|---|---|
b | booléen | bLightsEnabled |
c | personnage | cLetterGrade |
str | chaîne | strCategory |
je | entier | iWheels |
F | flotter | fMiles |
C | classer | CPerson |
{nom du cours} | objet | personneLeader |
Systèmes Hongrois Versus Apps Hongrois
La notation hongroise a une scission. Dans un coin, nous avons des systèmes hongrois, dans l'autre, des applications hongroises. La différence est subtile mais primordiale.
Le hongrois de systèmes est la version que les gens associent souvent à la notation hongroise. Il traite strictement du type de variable, comme nous l'avons montré ci-dessus.
Apps hongrois tente d'encoder le but d'une variable plutôt que son type de données. Il s'agit d'un concept beaucoup plus large, de sorte que les exemples peuvent couvrir de nombreux cas d'utilisation différents:
// an Unsafe String eg a name the user entered in a web form
$usName
// the Length of the vertical side
$lVertical
// a Count of references to an object
$cRefs
Les applications hongroises étaient la forme originale de la notation hongroise, et la description du but était l'intention de Simonyi. Les systèmes hongrois sont en quelque sorte une mutation, une mutation qui, selon beaucoup, est pour le pire.
Qu'y a-t-il de bon dans la notation hongroise?
Comme nous l'avons mentionné précédemment, le hongrois système peut être utile pour les langues faiblement typées. Il permet à quelqu'un qui regarde le code de déterminer instantanément le type d'une variable, chaque fois qu'elle apparaît.
La notation hongroise aide également à appliquer une dénomination de variable cohérente. Après tout, une mauvaise dénomination des variables est l'une des erreurs de programmation les plus courantes . La notation des applications peut aider les programmeurs à détecter des erreurs importantes dont le langage ne les alerterait pas autrement.
Et quel est le problème avec la notation hongroise?
En général, la notation hongroise n'est plus à la mode. Dans les langues fortement typées, il est largement redondant, en particulier le type hongrois de systèmes. Cela peut également rendre le code plus difficile à lire. Tous les problèmes qu'il pourrait aider à résoudre sont souvent le signe de failles plus profondes, telles qu'une dépendance excessive aux variables globales .
Apps Notation semble en avoir plus, mais même cette version a ses détracteurs. Il y a un bon argument selon lequel les informations sur l'objectif doivent toujours faire partie du type de la variable.
Tout langage qui prend en charge les types ou classes définis par l'utilisateur peut généralement atteindre les mêmes objectifs de manière plus efficace. Nommer une variable usName ne la rendra pas plus sûre. Mais la création d'une classe nommée UnsafeString permet à un compilateur de vérifier le type d'une variable.
Dois-je utiliser la notation hongroise?
En fin de compte, ce choix vous appartient. Si vous travaillez dans une équipe plus nombreuse, quelqu'un prendra probablement la décision et tout le monde devrait l'accepter. Si vous écrivez votre propre code, vous pouvez décider en vous basant sur les arguments ci-dessus.
Mais vous voudrez peut-être tenir compte des derniers conseils de Microsoft, la société à l'origine de la notation hongroise. Depuis 2008, leurs conventions générales de dénomination ont inclus cette simple note:
N'utilisez PAS la notation hongroise.