Ungarsk notasjon

I dataprogrammering er ungarsk notasjon et ofte brukt system for å lage variabelnavn . Det brukes også til å navngi objektforekomster i visuelle programmeringsspråk, for eksempel Delphi. Navnet på notasjonen kommer fra det faktum at dens oppfinner, Charles Simonyi , ble født i Ungarn .

Denne konvensjonen brukes sjelden i eldre versjoner av Delphi , men er mye brukt av Microsoft -programmerere og spesielt i Windows -operativsystemprogrammering .

Den består av små prefikser lagt til variabelnavn som indikerer typen. Resten av navnet angir så tydelig som mulig funksjonen som variabelen utfører.

Eksempler

Prefiks Betydning
b boolsk (int)
av BYTE eller UCHAR (usignert tegn)
c Tegn (én byte)
dw Usignert 32-biters langt heltall (dobbeltord)
F Flagg pakket inn i et 16-bits heltall
h 16-bits behandler
han 32-bits langt heltall
lbl merkeobjekt
lp Peker til 32-bits langt heltall
lpfn Lang peker til en funksjon som returnerer et heltall
lpsz Lang peker til en nullterminert streng
n 16-bits heltall
s 16-bits heltallspeker
og Oppregning
pt Koordinater (x,y) pakket inn i et 32-bits heltall
RGB RGB - fargeverdi pakket inn i et 32-bits heltall
sz nullterminert streng
tekst tekstbokser
w 16-bits usignert kort heltall (ord)

Nåværende situasjon

I dag er det flere kritikere enn fremmere av ungarsk notasjon. Faktisk blir det ofte beskrevet som en teknikk som i det lange løp forårsaker mer kompleksitet enn det hjelper vedlikehold. Spesielt når de fleste nåværende utviklingsmiljøer, spesielt de som brukes med statisk maskinskrevne språk, tilbyr enkle mekanismer for å finne ut typen variabler uten å ty til å søke etter deklarasjonen.

Det ser imidlertid ut til at, som i de fleste situasjoner, ligger dyden i midten, for uansett hvor mange smarte koderedigerere vi bruker, ender de fleste prosjekter alltid opp med å ha visse deler skrevet på dynamisk skrevet språk, spesielt JavaScript , den eneste implementert av de fleste nettlesere for å kjøre kode på klienten

Siden retningslinjer for kodestil vanligvis er etablert tidligere når du utfører prosjekter , er det ikke tilrådelig å gjøre dem forskjellige for hvert språk, og det kan defineres en ungarsk notasjonsstandard som har et lite kompromiss med enkel gjenkjennelse. kompleksiteten ved kodelesing.

Eksempel på 1-tegnsnotasjoner

Prefiks Betydning
en 'array' For skalært ordnede n-dimensjonale vektorer/matriser/lister.
b 'boolsk'. For variabler som bare tar to typer verdier.
c "char" For primitivtypen for enkelt alfanumerisk tegn.
d 'dobbelt'. For numeriske typer med høy presisjon, for eksempel dobbel eller flytende.
og 'begivenhet' For arrangementer.
F 'funksjon'. Vi vil bare bruke det foran funksjoner når de er funksjoner som legges til som observatører av en hendelse (siden å bruke denne notasjonen for en hvilken som helst metode eller funksjon ville være ganske tungvint).
g 'delegert'. For delegattyper.
h 'hash-tabell'. Sorterbare samlinger etter hash-nøkkel (hUsuarios["juan23"]).
Yo 'int'. For heltall generelt, både normale heltall og de heltallstypene med større kapasitet (som for eksempel lange).
han 'låse'. For kontrollobjekter som letter bruken av gjensidige utelukkelser, låser og semaforer.
n 'enum'. For oppregnede typer.
enten 'gjenstand'. For objekter generelt (ungarsk notasjon bør ikke brukes for å skille mellom typer objekter, med få unntak).
s 'peker'. For språk med pekeraritmetikk.
s 'streng'. For variabler av typen streng, enten de er native eller arrays av tegn. Denne datatypen er veldig vanlig på språk uten pekerlogikk. Hvis objektet "String"-typen brukes i disse tilfellene, vil vi bruke denne identifikatoren i stedet for objektet 'o'.
du 'struktur'. I likhet med 'o' til objekter, vil dette bli brukt for variabler av typen struct generelt (dvs. objekter av primitiv type).
v 'variabel'. For variabler som antar ulike typer verdier. Normalt vil vi bare bruke dette alternativet på språk som ikke er skrevet inn (som JavaScript / EcmaScript ). Vi vil bruke den når vi ikke er sikre på hvilken type verdi en variabel vil ha. Det kan også være gyldig for objekter som har en generisk type T.
Y 'byte'.

Dette eksemplet med ungarsk notasjon vil ikke virke like kritisk og merkelig som det som ble gitt som eksempel i begynnelsen av artikkelen, der det ble brukt opptil fire bokstaver for å betegne typen.

Se også