Notația maghiară
Notația maghiară este un acord privind numirea variabilelor, constantele și identificatorii în codul de programe.
Diferențele dintre sistemul de aplicații din Ungaria și Ungaria
În prefixe specifice ungurești precum „ix“ pentru a indica indicele de matrice, „c“ pentru contoare, „d“ pentru diferența dintre două numere (de exemplu, „dx“ înseamnă „lățime“) au fost determinate pentru cererea etc. . Sistemul maghiar a avut prefixe mult mai puțin utile, cum ar fi "l" pentru întregul lung, "ul" pentru lungul întreg nesemnat și "dw" pentru cuvântul dublu. care, de fapt, este un lung întreg nesemnat, etc. În lucrarea unică sistemică maghiară pe care prefixul ți-a spus-o, de fapt, era doar tipul variabilei. Ie vedem că diferența este fundamentală, deși ideea de a adăuga informații suplimentare despre o variabilă folosind sistemul de prefixe este aceeași.
Mulți programatori din afara Microsoft au adoptat acest acord sau altă schemă similară pentru formarea identificatorilor. Poate că unul dintre factorii decisivi care au promovat notația ungară a fost o carte citită de aproape fiecare programator Windows interesat: programul lui Charles Petzold Windows. În carte acest acord a fost folosit pentru exemple și note și a fost descris pe scurt în primul capitol. Esența notării ungare este că numele identificatorilor sunt precedate de prefixe pre-specificate constând din unul sau mai multe simboluri. În acest caz, de regulă, nici prezența prefixelor, nici scrierea lor nu este o cerință a limbajelor de programare.
Voi da un scurt tabel de prefixe ale notatiei maghiare (sistem).
Desigur, fiecare programator (sau o echipă de programatori) poate avea propriile lor, dar are sens să inventăm o bicicletă, este mai rezonabil, desigur, să modificăm parțial setul de reguli care să se potrivească nevoilor și sarcinilor dvs., lăsând volumul neschimbat.
Într-un sens mai larg, notația maghiară poate fi utilizată chiar și în limbi care nu au tipuri de variabile, de exemplu, atunci când se lucrează cu date cu ajutorul prefixe este posibil să se facă distincția între, să zicem variabile care conțin date interne, verificate și datele introduse de către utilizator sau de alte surse externe, în ceea ce privește sistemul dumneavoastră (programul ), care va evita erorile critice și va face programul mai puțin vulnerabil din punct de vedere al securității.
Un exemplu.
Variabilele care sunt externe vor avea prefixul nostru (UnSafe nu este sigur), atunci vom avea numele variabilelor:
Nume utilizator - numele de utilizator (datele sistemului nostru);
UserInfo - informații despre utilizator (date ale sistemului nostru);
usUserName - nume de utilizator (date primite);
usUserInfo - informații despre utilizator (date primite);
În ciuda prevalenței răspândite a notației maghiare, există programatori care o consideră nu numai inutilă, ci și dăunătoare, interferând și confuză. În confirmarea părerii lor, se dau următoarele argumente:
1) Orice informație inutilă confundă utilizatorul;
2) Probleme de schimbare a numelor variabilelor în schimbarea tipului lor;
3) lipsa controlului;
4) Pierderea timpului. există o evidențiere a sintaxei;
5) Declarația Microsoft că "notația ungară nu este recomandată;
6) "Inscripționarea unui nume variabil în numele său (așa-numita notație maghiară) este dăunătoare - compilatorul cunoaște deja tipurile și le poate testa. "(Potrivit unor surse, Linus Torvalds, oponentul notatiei maghiare);
1) problema obiceiului, dacă am citit "sensul" programului, nu mă uit la prefixe, dacă trebuie să știu tipul sau să verific corectitatea tipurilor la care mă uit la prefix;
2) dacă doriți să schimbați tipul unei variabile, atunci acest lucru este în mod clar o greșeală făcută atunci când proetirovanii și în astfel de cazuri, codul este rescris, iar pe de altă parte, aș spune că este atras de un singur caz (băieții au în vedere o schimbare de tip int unui alt tip întreg lung sau și apoi va trebui să se schimbe numele variabilă, spuneți cu iSize pe lSize) și ce veți face dacă tipul unei variabile cu modificări lungi la un dublu? Chiar ajutați ca variabila să fie numită Dimensiune și nu lSize? și că nu veți corecta toate comparațiile variabilei? operații aritmetice? schimbați tipurile de variabile utilizate pentru a stoca rezultatele calculelor utilizând această variabilă?
de exemplu, există o astfel de piesă în cod
lungi lRes;
lRes = lSize -1;
dacă (lRes> 0)
3) Notatia maghiara daca este destinata controlului este doar din partea programatorului;
ia în considerare un exemplu cu o înregistrare fără a utiliza notația
Ca toate OK, compilatorul nu jura si a scris doar atunci cand stia aceasta variabila Param1 de tip DWORD
o reacție complet diferită este dacă folosiți o notație și vedeți codul
int iRes;
iRes = (int) dwParam1;
veți spune cum variația de tip int este atribuită valorii de tip DWORD datele pot fi pierdute? și să acorde deja atenție codului și poate corecta o eroare non-trivială care poate apărea destul de rar și din acest motiv este dificil de găsit și detectat într-un sistem complex.
4) evidențierea sintaxei este foarte bine, dar există mai multe dar și o mulțime de IF;
Îmi place foarte mult aceste lucruri, dar iartă și spune unde în Microsoft Visual Studio vom seta lumina de fundal pentru bool, int, long, etc. lumina de fundal de culoare? și unde este configurat într-un "notepad" standard deoarece spun că nu am un studio și folosesc un "notepad" și o linie de comandă pentru compilare? Și dacă stau pe calculatorul altcuiva cu un set complet diferit de sintaxă? Și dacă sunt colorblind și pentru mine, 30% din culori (nuanțe) arată exact la fel? Și dacă dezasamblez codul spun într-o carte sau pe o pagină a site-ului în care nu există instrumente pentru evidențiere? și așa mai departe. și așa mai departe.
5) Microsoft a avut motive bune pentru aceasta după introducerea noilor tehnologii în programare, în special "codul gestionat" atunci când le folosiți, dacă aderă la notația pe care o puteți confunda cu adevărat și puteți confunda altele dacă utilizați notație peste tot;
6) Mă refer la expresia ruptă din context (mai degrabă, totul poate fi.);
Și așa. pentru mine, eu vad cateva plusuri si un mic minus in care toate aceleasi 1-5 simboluri ale prefixului ar trebui sa fie tiparite. Oamenii care nu folosesc (în mod deliberat, fără a fi dușmani) batjocura notație maghiare prea, nu cred chiar cu privire la ceea ce ei sunt egoisti eu nu pot ajuta :) Toata lumea decide ce să folosească și ce nu, dar nu uitați că, în ultimii ani pentru a scrie ceva bun la foarte dificil și lung, și mai devreme sau mai târziu, va trebui să lucreze într-o echipă care are propriul acord și trebuie să se conformeze, desigur, dacă faci programare profesional, dar nu și pentru petrecerea timpului liber.