Unkarilainen notaatio

Unkarilainen notaatio on ohjelmoinnissa käytetty nimeämiskäytäntö, jossa muuttujan nimi ilmaisee sen tyypin tai käyttötarkoituksen. Unkarilaisessa notaatiossa muuttujan varsinaisen nimen eteen sijoitetaan pieniä kirjaimia, joiden tarkoitus on muistuttaa ohjelmoijaa muuttujan tyypistä tai käyttötavasta. 

Unkarilaista notaatiota on kahta eri tyyppiä: Systems Hungarian ja Apps Hungarian. Näistä ensimmäisessä muuttujan nimen eteen sijoitetaan merkintä muuttujan tietotyypistä ja jälkimmäisessä muuttujan käyttötarkoituksesta.

Historia

Alkuperäisen unkarilaisen notaation – jota nykyisin kutsutaan Apps Hungarianiksi – keksi unkarilaissyntyinen Charles Simonyi. Unkarilainen notaatio on saanut nimensä unkarilaisesta tavasta kirjoittaa henkilön sukunimi ennen etunimeä. Simonyista tuli myöhemmin Microsoftin pääarkkitehti, ja merkintätapaa on käytetty Microsoftin Windows-tuotteissa.

Termi Apps Hungarian sai nimensä siitä, että sentyyppistä nimeämiskäytäntöä käytettiin Microsoftin sovellusohjelmia () kehittävällä osastolla. Systems Hungariania käytettiin myöhemmin Windows-kehitysryhmässä. Simonyin unkarilaisen notaation määrittelevä artikkeli puhuu muuttujien etuliitteistä, jotka ilmaisevat muuttujien "tyypin". Simonyi tarkoitti tällä lähinnä muuttujan semantiikka, mitä tapaa Apps Hungarian noudattaa. Jotkin Simonyin esimerkeistä ovat kuitenkin melko epäsemanttisia, joten Systems Hungarianiakaan ei voi pitää "vääränä" merkintätapana.

Apps Hungarian ja Systems Hungarian

Systems Hungarianin ja Apps Hungarianin ero on etuliitteen käyttötavassa. Systems Hungarianissa etuliite ilmoittaa muuttujan tietotyypin tai toteutustavan:

 ulTime: etumerkitön pitkä kokonaisluku (), johon on tallennettu aika
 szFilename: NUL-merkkiin päättyvä merkkijono, johon on tallennettu tiedostonnimi

Apps Hungarianissa etuliite taas muistuttaa muuttujan käyttötarkoituksesta:

 rwPosition: paikkatieto, joka tarkoittaa riviä ()
 usName: muuttujassa on "vaarallinen" merkkijono (), joka täytyy muuttaa vaarattomaksi ennen kuin sitä voi käyttää

Kritiikkiä

Unkarilainen notaatio saattaa johtaa lukemiskelvottomiin muuttujien ja funktioiden nimiin, kuten lpcstrFilename ("32-bittinen osoitin () vakiomerkkijonoon jossa on tiedostonnimi"). 

Unkarilaista notaatiota vastaan on puhunut mm. Linus Torvaldsin ja Linux-ytimen tyylioppaan mukaan "se on aivovaurioitunutta ja vain hämmentää ohjelmoijaa" perusteena että ohjelmointikielen kääntäjä tunnistaa ja pystyy tarkistamaan tietotyypin. 

Bjarne Stroustrup on myös kritisoinut notaation käyttöä geneeriseen ohjelmointiin kykenevissä kielissä sanoen, että se ".. yksinkertaisesti monimutkaistaa ja vähentää abstraktiota". 

.NETissä myös Microsoft on luopunut käytännöstä ja .NET Framework Guidelines suosittelee olemaan käyttämättä sitä.

Lähteet

Aiheesta muualla
 Charles Simonyi: Program Identifier Naming Conventions  (PDF) 

Ohjelmointi