Notatie maghiara

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 25 septembrie 2017; verificările necesită 19 modificări .

Notația maghiară  în programare  este o convenție de denumire pentru variabile , constante și alți identificatori din codul programului . Notația maghiară și-a primit numele datorită programatorului Microsoft de origine maghiară Charles Simoni ( Hung. Simonyi Károly ), care a propus-o încă din zilele dezvoltării primelor versiuni de MS-DOS . Acest sistem a devenit un standard intern Microsoft [1] .

Esența notației maghiare constă în faptul că numele identificatorilor sunt precedate de prefixe prespecificate constând din unul sau mai multe caractere. În același timp, de regulă, nici prezența prefixelor, nici scrierea acestora nu este o cerință a limbajelor de programare , iar fiecare programator (sau echipă de programatori) poate avea propria lor.

Sistemul de prefixe utilizat depinde de mulți factori:

Exemple

Introduceți prefixele

Prefix Scurt pentru Sens Exemplu
s şir linia sClientName
sz șir terminat cu zero șir terminat nul szClientName
n,i int variabilă întreagă nSize, iSize
l lung întreg lung lAmount
b boolean boolean bIsEmpty
A matrice matrice aDimensions
t, dt ora, data ora ora, data si ora tDelivery,dtDelivery
p indicator indicator pBox
lp indicator lung indicator dublu (departe). lpBox
r referinţă legătură rBoxes
h mâner descriptor hWindow
m_ membru variabila membru m_sAddress
g_ global variabilă globală g_nSpeed
C clasă Clasă CString
T tip tip de TObject
eu interfata interfata IDispatch
v gol lipsa tipului vReserved

După cum puteți vedea în exemplul de mai sus, prefixul poate fi și compus. m_sAddressDe exemplu, o combinație de prefixe „m_” și „s” ( ) este utilizată pentru a denumi o variabilă membru șir a unei clase .

Prefixe semantice

Notație maghiară pentru aplicații :

Prefix Scurt pentru Sens Exemplu
i index Index int ix; Array[ix] = 10;
d delta Diferența dintre valori int a, b; ... dba = b - a;
n număr Cantitate size_t nFound = 0;
A argument Argument SomeClass::SomeClass(int aX) : x(aX) {}
eu interfata Interfață (în numele tipului) interface IFactory {}

Pro și contra

Printre programatori, există atât susținători, cât și oponenți ai folosirii notației maghiare. Oponenții susțin că este greoaie și nu face decât să înrăutățească înțelegerea codului. Susținătorii susțin că prea mulți oameni înțeleg greșit ideea principală și folosesc greșit notația.

Beneficii

Glumă

Acest stil de denumire este numit notația „maghiară”, după locul nașterii directorului de programare al Microsoft, Charles Simonyi, care l-a inventat. (Nu pentru că folosirea lui face ca programele să pară scrise în limba maghiară [3] )

A. Golub. Funie de lungime suficientă.

Dezavantaje

Un oponent binecunoscut al notației maghiare este Linus Torvalds : „Inscrierea tipului unei variabile în numele ei (așa-numita notație maghiară) este greșită - compilatorul cunoaște deja tipurile și le poate verifica, iar acest lucru derutează programatorul ” [5] .

Fapte interesante

Vezi și

Note

  1. Notația maghiară . Consultat la 14 iunie 2022. Arhivat din original pe 10 iunie 2006.
  2. Joel Spolsky . Cum să faci codul greșit să arate greșit Arhivat 19 iulie 2006 la Wayback Machine
  3. ↑ Limba maghiară , deși are alfabet latin , este considerată extrem de ilizibilă pentru cei neinformați.
  4. 1 2 În interiorul C++ - Notație maghiară . Consultat la 12 noiembrie 2008. Arhivat din original la 30 octombrie 2008.
  5. „Linux kernel coding style” Arhivat 23 septembrie 2005. . Documentația kernel-ului Linux (în engleză).
  6. Despre digraful sz de pe Wikipedia în engleză