Ungarsk notation

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. september 2017; checks kræver 19 redigeringer .

Ungarsk notation  i programmering  er en navnekonvention for variabler , konstanter og andre identifikatorer i programkode . Den ungarske notation fik sit navn takket være den ungarsk -fødte Microsoft -programmør Charles Simoni ( Hung. Simonyi Károly ), som foreslog det tilbage i tiden med udviklingen af ​​de første versioner af MS-DOS . Dette system er blevet en intern Microsoft-standard [1] .

Essensen af ​​den ungarske notation er, at navnene på identifikatorer indledes med foruddefinerede præfikser bestående af et eller flere tegn. Samtidig er hverken selve tilstedeværelsen af ​​præfikser eller deres skrivning et krav til programmeringssprog , og hver programmør (eller team af programmører) kan have deres egne.

Det anvendte præfikssystem afhænger af mange faktorer:

Eksempler

Indtast præfikser

Præfiks Forkortelse for Betyder Eksempel
s snor linje sClientName
sz nul-termineret streng null-termineret streng szClientName
n,i int heltalsvariabel nSize, iSize
l lang langt heltal lAmount
b boolesk boolesk bIsEmpty
-en array array aDimensions
t, dt tid, dato og klokkeslæt tid, dato og tid tDelivery,dtDelivery
s pointer pointer pBox
lp lang pegepind dobbelt (fjern) pointer lpBox
r reference link rBoxes
h håndtere beskrivelse hWindow
m_ medlem medlemsvariabel m_sAddress
g_ global global variabel g_nSpeed
C klasse Klasse CString
T type type TObject
jeg interface interface IDispatch
v ugyldig mangel på type vReserved

Som du kan se i ovenstående eksempel, kan præfikset også være sammensat. m_sAddressFor eksempel bruges en kombination af "m_" og "s" ( ) præfikser til at navngive en strengmedlemsvariabel i en klasse .

Semantiske præfikser

Ungarsk notation for applikationer :

Præfiks Forkortelse for Betyder Eksempel
jeg indeks Indeks int ix; Array[ix] = 10;
d delta Forskel mellem værdier int a, b; ... dba = b - a;
n nummer Antal size_t nFound = 0;
-en argument Argument SomeClass::SomeClass(int aX) : x(aX) {}
jeg interface Interface (i typenavn) interface IFactory {}

For og imod

Blandt programmører er der både tilhængere og modstandere af brugen af ​​ungarsk notation. Modstandere hævder, at det er besværligt og kun forværrer forståelsen af ​​koden. Tilhængere hævder, at for mange mennesker misforstår hovedideen og misbruger notationen.

Fordele

Joke

Denne navngivningsstil kaldes den "ungarske" notation efter fødestedet for Microsofts programmeringschef Charles Simonyi, som opfandt den. (Ikke fordi brugen af ​​det får programmer til at se ud som om de er skrevet på ungarsk [3] )

A. Golub. Reb af tilstrækkelig længde.

Ulemper

En velkendt modstander af den ungarske notation er Linus Torvalds : "At indskrive typen af ​​en variabel i dens navn (den såkaldte ungarske notation) er mangelfuld - compileren kender allerede typerne og kan kontrollere dem, og det forvirrer programmøren " [5] .

Interessante fakta

Se også

Noter

  1. Ungarsk notation . Hentet 14. juni 2022. Arkiveret fra originalen 10. juni 2006.
  2. Joel Spolsky . Sådan får du en forkert kode til at se forkert ud Arkiveret 19. juli 2006 på Wayback-maskinen
  3. ↑ Det ungarske sprog , selvom det har et latinsk alfabet, anses for ekstremt ulæseligt for uoplyste.
  4. 1 2 Inside C++ - Ungarsk notation . Hentet 12. november 2008. Arkiveret fra originalen 30. oktober 2008.
  5. "Linux-kernekodningsstil" Arkiveret 23. september 2005. . Linux-kernedokumentation (på engelsk).
  6. Om digraphen sz på den engelske Wikipedia