- Notation hongroise
-
En programmation, la notation hongroise est une convention de nommage qui met en avant soit l'usage d'une variable, soit son type. 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.
On distingue deux notations hongroises :
- notation hongroise Apps
- notation hongroise Systems
La première a été inventée par Charles Simonyi, programmeur chez Xerox puis architecte en chef au sein de Microsoft. Cette dernière a adopté ce style d'écriture et l'a transformé pour obtenir la notation Systems. La qualification de « hongroise » vient du pays d'origine de Simonyi.
Sommaire
Notation hongroise Apps
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).
Notation hongroise Systems
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.
prefixes description i int (entier) n short int (entier court) l long int (entier long) f float (nombre a virgule flottante) d double (float double) c char (caractere) by byte (caractere non signe) b boolean (booleen true/false) s string (chaine de caracteres) w word (mot = double octet) dw double word (double mot) sz zero-terminated string (chaine de caracteres terminee par un char zero) str string object (objet String) h handle pt point rgb rgb triplet f file (fichier) fd file descriptor (descripteur/pointeur de fichier) v void
modificateurs description u unsigned (non signe) p pointer (pointeur) a ou ar array (tableau) m_ member variable (variable membre) g_ global variable (variable globale) s_ static variable (variable statique)
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
Voir aussi
Wikimedia Foundation. 2010.