Unkarilainen notaatio

Wikipedia
Loikkaa: valikkoon, hakuun

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[muokkaa | muokkaa wikitekstiä]

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 sovelluksia (engl. application) 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[muokkaa | muokkaa wikitekstiä]

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

  • ulTime: etumerkitön pitkä kokonaisluku (engl. unsigned long), 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ä (engl. row)
  • usName: muuttujassa on "vaarallinen" merkkijono (engl. unsafe string), joka täytyy muuttaa vaarattomaksi ennen kuin sitä voi käyttää

Kritiikkiä[muokkaa | muokkaa wikitekstiä]

Unkarilainen notaatio saattaa johtaa lukemiskelvottomiin muuttujien ja funktioiden nimiin, kuten lpcstrFilename ("32-bittinen osoitin (engl. long pointer) vakiomerkkijonoon jossa on tiedostonnimi"). Unkarilaista notaatiota vastaan on puhunut mm. Linus Torvalds[1], jonka mukaan "se ei ole ainoastaan aivokuollutta, vaan myös aivovaurioita aiheuttavaa". .NETissä myös Microsoft on luopunut käytännöstä ja .NET Framework Guidelines suosittelee olemaan käyttämättä sitä.

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. /usr/src/linux/CodingStyle

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]