Notacja węgierska
Notacja węgierska (ang. Hungarian Notation) – w programowaniu sposób zapisu nazw zmiennych oraz obiektów, polegający na poprzedzaniu właściwej nazwy małą literą (literami) określającą rodzaj tej zmiennej (obiektu).
Notację węgierską wymyślił Charles Simonyi, programista z Microsoft. Można spotkać się z takimi formatami zapisu nazw zmiennych:
iLiczba i_Liczba i_liczba
Przykład użycia notacji węgierskiej do nazywania zmiennych w C++:
przedrostek | znaczenie |
---|---|
s | string (łańcuch znaków) |
sz | string (łańcuch znaków zakończony bajtem zerowym – null-em) |
c | char (jeden znak), również const – wartość stała (szczególnie w przypadku użycia wskaźników) |
by | byte, unsigned char |
n | short |
i | int |
x, y | int (przy zmiennych określających współrzędne) |
cx, cy | int (przy zmiennych określających rozmiar, długość) |
l | long |
w | word |
dw | dword |
b | boolean (wartość logiczna: prawda lub fałsz) |
f | flaga |
fn | funkcja |
h | handle (uchwyt) |
p | pointer (wskaźnik) |
Charakterystyczne dla notacji węgierskiej (tworzące jej „węgierskie brzmienie”) są również złożenia przedrostków, zbliżone do składania morfemów gramatycznych z morfemami znaczeniowymi w języku węgierskim (i innych językach aglutynacyjnych).
przedrostek | znaczenie |
---|---|
lpcsz | „długi” („daleki”) wskaźnik na stały ciąg znaków zakończony bajtem zerowym |
pfn | wskaźnik na funkcję |
Największą wadą tego systemu jest to, że jeśli chce się zmienić typ zmiennej, trzeba poprawiać nazwę w każdym miejscu występowania jej w programie.
Notację węgierską stosuje się także w celu zaznaczenia zasięgu zmiennej, np.:
g_iZmienna
- zmienna globalna, integerm_iZmienna
- zmienna w strukturze lub klasie, integerm_Zmienna
- zmienna w strukturze lub klasies_Zmienna
- zmienna statyczna klasy_Zmienna
- zmienna lokalna