Notation hongroise

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La notation hongroise est, en programmation informatique, une convention de nommage des variables et des fonctions qui met en avant soit leur usage, soit leur type.

La désignation de cette convention qui conduit à des noms vraiment très exotiques dans un contexte de programmation anglais fait probablement référence à l’origine hongroise de son inventeur, Charles Simonyi[1], programmeur chez Xerox puis architecte en chef au sein de Microsoft.

Par exemple la variable booléenne danger est préfixée par un b pour indiquer un type booléen : bDanger. Autre exemple, la variable indexant un client, sera préfixée par un idx pour indiquer son usage : idxClient[2].

On distingue en principe deux notations hongroises :

  • notation hongroise Apps
  • notation hongroise Systems

Notation hongroise Apps[modifier | modifier le code]

C'est l'idée de préfixer le nom des variables de manière à indiquer son utilisation :

  • rwPosition : variable représentant une ligne (row en anglais)
  • usName : variable représentant une chaîne de caractères non sûre (unsafe string en anglais)

Cette notation fut utilisée notamment dans le langage BCPL car il n'y avait alors d'autres types que les 'word' machine.

L'intérêt évident de cette notation est qu'elle prévient le développeur, par simple convention, de la possible erreur dans l'usage de ses variables, juste par la lecture du code. Ainsi, l'assignation de variable rwPosition = colOtherPosition signifie assigner une valeur de colonne (col) à une valeur de ligne (row).

Néanmoins, depuis 2005, Microsoft ne recommande plus l'utilisation de ce système de notation[3].

Notation hongroise Systems[modifier | modifier le code]

Cette notation utilisée couramment consiste à faire précéder le nom de la variable d'un préfixe reflétant son type. Ce préfixe est toujours écrit en minuscule puis la première lettre suivante en majuscule. Ce qui donne :

 short nIndex;
 char cChar;
 float* pfVal;

Évidemment, il ne faut pas en abuser sinon elle devient inutile. Ex. :

  • arpszTableau pour un tableau de pointeurs de chaînes de caractères.
préfixes        description
i               int (entier)
n               short int (entier court)
l               long int (entier long)
f               float (nombre à virgule flottante)
d               double (float double)
c               char (caractère)
by              byte (caractère non signé)
b               boolean (booléen true/false)
s               string (chaine de caractères)
w               word (mot = double octet)
dw              double word (double mot)
sz              zero-terminated string (chaine de caractères terminée par un char zéro)
str             string object (objet String)
h               handle
o               object (objet)
pt              point
rgb             rgb triplet
f               file (fichier)
fd              file descriptor (descripteur/pointeur de fichier)
v               void
modificateurs   description
u               unsigned (non signé)
p               pointer (pointeur)
a ou ar         array (tableau)
m_              member variable (variable membre)
g_              global variable (variable globale)
s_              static variable (variable statique)
l_              local variable (variable locale)

Microsoft a introduit deux coutumes pour la notation hongroise Systems : utiliser trois caractères au lieu d'un pour qualifier une variable ou une constante, et commencer chaque nom par une majuscule au sein d'un mot comportant plusieurs noms.

Exemple (VBScript 5.6) :

On Error Resume Next
strComputer = "fictional"
strPrinter = "TestPrinter"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err = 0 Then
 WScript.Echo "No error binding to " & strComputer
 strPrinter = "TestPrinter"
 Set objPrinter = objWMIService.Get("Win32_Printer.Name='" & strPrinter & "'")
 If Err = 0 Then
   WScript.Echo "No error connecting to " & strPrinter
 Else
   call DisplayErrorInfo
 End If
Else
 call DisplayErrorInfo
End If
WScript.Quit 0
'******************************************************************************
Sub DisplayErrorInfo

 WScript.Echo "Error:      : " & Err
 WScript.Echo "Error (hex) : &H" & Hex(Err)
 WScript.Echo "Source      : " & Err.Source
 WScript.Echo "Description : " & Err.Description
 WScript.Quit 1

End Sub

Références[modifier | modifier le code]

  1. Microsoft Corporation − Hungarian Notation
  2. Le hongrois en tant que langue naturelle fonctionne effectivement de la même manière, bien qu’il utilise des suffixes au lieu de préfixes, cf. Pierre GAAL – C’est élémentaire, mon cher Watson!.
  3. General Naming Convention sur le Microsoft Developer Network

Voir aussi[modifier | modifier le code]