Magyar jelölés

A magyar jelölés egy elnevezési megállapodás a számítógép-programozásban. Ebben a jelölésrendszerben egy objektum neve feltünteti a típusát és a tervezett használatát is.

A magyar jelölést a BCPL programozási nyelvben való használatra tervezték, melyben alig van korlátozás a különböző adattípusokkal történő műveletekre, és így a nyelv a véletlen típusokkal kapcsolatos hibáknak erősen ki van téve. A magyar jelölés ezt próbálja orvosolni, mégpedig úgy, hogy a programozónak világos képet ad a változó típusáról.

A magyar jelölésben a változó neve egy vagy több kisbetűvel kezdődik, melyek emlékeztetnek a változó típusára vagy céljára; ezt követi a programozó által választott név. A megadott név nagy kezdőbetűs, hogy el legyen választva a típusjelölőktől.

Rendszer vagy alkalmazás jelölés 

A rendszer magyar jelölésben a prefix az adat típusát jelöli, például:
 lSzamlalo: long típusú számláló
 arru8Szamok: egy tömb 8 bites előjel nélküli egészeknek

Az alkalmazás magyar jelölés ellenben a felhasználás típusát jelöli, például:
 rwNev: egy írható és olvasható név
 usNev: "unsafe" azaz még nem ellenőrzött adat

Hasonló jelölések más programozási nyelvekben
Néhány programozási nyelvben hasonló jelöléseket építenek a nyelvbe. Például a BASIC-ben a name$ egy karakterláncot nevez meg, a count% pedig egy egész számot. A FORTRAN nyelvben az I… N-nel,  kezdődő változók automatikusan egész számként értelmeződnek.

Példák
nMeret: egész szám („number”)
cAlma: elemek száma („count”)
dwFenyev: duplaszó („double word”)
bElfoglalt: logikai („boolean”)
pFoo: mutató („pointer”)
szVezeteknev: nullával végződő karakterlánc („string” és „zero”)
rgTanulok: tömb vagy tartomány („range”)

A mutatókra és tömbökre vonatkozó emlékeztető betűsort – melyek nem adattípusok – általában maga az adatelem típusa követi:
rgfEgyensuly: lebegőpontos értékek tömbje („floating-point”)
pszOwner: nullával végződő karakterláncra való mutató

Habár a magyar jelölés bármely programozási nyelvben és környezetben használható, a Microsoft Windowsra írt C nyelvre készült, és még mindig erősen erre a területre korlátozzák. Így sok gyakran látott magyar jelöléses betűsor Windows-specifikus:
hwndFoo: egy ablak azonosítószáma („handle” és „window”)
lpszBar: nullával végződő karakterláncra való hosszú mutató („long pointer”)

A magyar jelölést néha kiterjesztik a C++-ban, hogy tartalmazza a változó érvényességi tartományát – ezt egy aláhúzásjellel választják el:
m_nKerekek: egy osztály tagja („member”), egész szám

Eredet
A magyar jelölést Simonyi Károly fia, Charles Simonyi szoftverfejlesztő, a szándékorientált programozás (Intentional Programming, IP) kutatója  dolgozta ki, amely hatékonyabbá tette a fejlesztői munkát. Charles Simonyi korábban a Xeroxnál, majd a Microsoftnál dolgozott, később saját céget alapított. A jelölés elnevezése Simonyi magyar származásából ered, így nevezik más nyelveken is (például angolul Hungarian notation, németül ungarische Notation), s mivel a legtöbb Microsoft dokumentáció a magyar jelöléssel lett közzétéve, ezért a Microsofton kívül is sokan átvették a módszert.

Források 
 Hungarian Notation (Simonyi eredeti cikkével, angol nyelven)
 Coding Conventions: The Hungarian Notation

Számítógép-programozás