Rezumatul documentului
"Acordul maghiar" cu privire la numele identificatorilor Charles Simonyi.
Notă de la dr. GUI
Chiar și în timpul dezvoltării primei versiuni a DOS, Dr. Charles Simonyi a introdus convenția de denumire de identificare, în care să specifice scopul funcțional al obiectului reprezentat de identificatorul utilizat pentru a adăuga un prefix la numele de identificare.
Notarea maghiară este una dintre tehnicile care permite programatorilor să creeze un cod mai ușor de citit într-un timp scurt. Majoritatea fișierelor de documentație și antet publicate de Microsoft în ultimii 15 ani utilizează notația ungară. Mulți programatori din afara Microsoft au adoptat acest acord sau altă schemă similară pentru formarea identificatorilor.
Poate că cea mai importantă publicație care a promovat notația maghiară a fost prima carte citită de aproape fiecare programator de Windows: programul "Windows Windows" al lui Charles Petzold. În carte acest acord a fost folosit pentru exemple și note și a fost descris pe scurt în primul capitol.
Acest document prezintă versiunea inițială a lucrării lui Simonia.
Acordul privind identificatorii din program.
Acest document este destinat să descrie principalele avantaje ale formării formale a identificatorilor.
Când introduceți un nou identificator în program, un bun programator ia în considerare următorii factori:
- semnificația mnemonică. identificatorul ar trebui să fie ușor de reținut
- semnificație semantică. Rolul identificatorului ar trebui să fie clar din numele acestuia
- continuitate. este adesea privită ca o idee pur estetică, dar, totuși, obiecte similare ar trebui să aibă identificatori identici.
- viteza de solutionare. inventarea, introducerea și editarea unui identificator nu trebuie să dureze prea mult, identificatorul nu ar trebui să fie prea lung.
Alegerea numelor poate fi o sarcină care absoarbe timpul excesiv de la dezvoltator. Adesea, un identificator care satisface una dintre condiții contrazice celălalt. În plus, uneori este dificil să se mențină continuitatea numelor.
Beneficiile acordurilor
Aceste acorduri de identitate oferă o tehnologie convenabilă pentru generarea de nume care îndeplinesc criteriile de mai sus. Ideea de bază este de a transfera caracteristicile de bază ale identificatorului ca parte a numelui său. Această idee simplă, desigur, necesită o clarificare (care, de exemplu, ar trebui să fie un "criteriu", ce dacă ele (criteriile) nu sunt unice?). Cu toate acestea, să descriem mai întâi dispozițiile generale.
Numele vor fi mnemonice într-un sens strict definit: identificatorul va fi evident pentru cineva care își amintește numele caracteristicii sau principiul construcției sale.
Numele au un înțeles semantic: ar trebui să fie posibilă afișarea oricărui nume în setul de caracteristici.
Numele vor fi consecvente, deoarece sunt produse prin aceleași reguli.
Construcția numelor se va face mecanic, deci rapid.
Expresiile din program pot fi verificate pentru continuitate prin metode similare cu dimensiunile uzuale ale proprietăților obiectului.
Reguli de desemnare
Sunt propuse următoarele reguli de denumire: 1) Descrierea caracteristicii ID este inclusă în identificator. O punctuație convenabilă este specificarea caracteristicilor înaintea numelui, cu împărțirea lor (începutul numelui cu o literă mare în C, de exemplu: rowFirst: row - characteristic, Fist - name).
2) Numele se distinge prin identificatori care au același tip și există în același context. Contextul poate fi atât sistemul ca întreg, cât și blocul, procedura, structura de date, în funcție de mediul de programare. Dacă există un nume standard, trebuie folosit. Alegerea ar trebui să fie cât mai simplă posibil, deoarece identificatorul este unic numai într-un anumit context.
3) Tipurile simple sunt numite etichete scurte, alese de programator. Aceste etichete ar trebui să fie înțelese intuitiv de majoritatea programatorilor.
Eticheta trebuie să fie scurtă pentru a îndeplini a patra condiție (factor) introdusă mai sus. Numele tipurilor de compuși trebuie să includă numele componentelor. Există scheme standard pentru construirea unui pointer și a unui matrice. Alte tipuri de date pot fi definite arbitrar. De exemplu, prefixul p este folosit pentru pointeri. În principiu, acordurile pot fi îmbogățite în conformitate cu noile scheme de tip de date. Cu toate acestea, desenele standard pot servi mult timp. Trebuie remarcat faptul că domeniile structurilor nu trebuie să participe la formarea prefixului, deoarece în acest caz, construcțiile cu mai mult de două câmpuri ar fi pur și simplu imposibil de citit. Mai important este transmiterea în prefixul structurii esenței sale, dependentă nu de setul de câmpuri, ci de modul în care este folosit.
Vă recomandăm să utilizați o nouă etichetă pentru fiecare nouă structură de date. O etichetă cu o anumită punctuație (prima sau toate majusculele) poate fi de asemenea utilizată ca nume de tip pentru structură. Utilizarea de etichete noi este justificată în cazurile în care aceasta afectează lizibilitatea programului.
Experiența mea arată că etichetele sunt mai greu de selectat decât numele. Atunci când este necesară o nouă etichetă, prima dorință este de a folosi un termen scurt, vizual, general și universal ca nume de tip. Aceasta este aproape întotdeauna o greșeală. Nu puteți rezerva termenii și expresiile cele mai utile pentru anumite scopuri ale unei anumite sarcini sau chiar a unei versiuni. De regulă, orice termen universal este aplicabil în mod egal pentru multe tipuri, chiar și în același program.
Rețineți că, de regulă, alegerea evidentă pentru titlu este cea mai corectă. Motivul pentru aceasta este că numele trebuie să fie unic într-un context mult mai mic decât eticheta. Deoarece numele, de regulă, nu participă la formarea altor nume, acestea nu trebuie să fie foarte scurte.
De exemplu, creăm un program grafic. În acest caz, avem un tip de date "color". O dorință naturală este să se facă desemnarea culorii prefixului de culoare. Cu toate acestea, la examinarea mai detaliată, se poate dovedi că utilizarea termenului de culoare este mai convenabilă în apendicele la titlu, de exemplu: LineColor. Pentru a denumi culoarea, este mai avantajos să scurtezi, de exemplu clr. clrDefault.
Notație pentru simplitatea ortografiei.
Formarea adecvată a identificatorilor ar trebui să permită mai multor programatori să creeze în mod independent un program pentru a rezolva o sarcină. Fiecare programator trebuie să cunoască regulile de denumire, altfel este imposibil de organizat interacțiunea. Un astfel de experiment este inutil când se ia în considerare un proiect mare, dar este un obiectiv clar. Rezultatul este capacitatea de a înțelege și corecta un program scris de o altă persoană. Un astfel de rezultat este realizabil prin utilizarea corectă a acordurilor definite în mod obișnuit. De aceea procesul de documentare a etichetelor este extrem de important.
Desemnarea pentru proceduri.
Din păcate, conceptul simplu de etichete imprimate calificate nu funcționează pentru numele procedurilor. Unele proceduri nu primesc parametri sau valori returnate. Contextele denumirii procedurilor tind să fie mari. Următorul set de reguli speciale pentru proceduri poate funcționa foarte satisfăcător:
1) Denumirile procedurilor trebuie să difere de alte denumiri prin punctuație, de exemplu, întotdeauna începând cu o literă mare (în timp ce etichetele caracteristicilor altor identificatori sunt scrise cu litere mici).
2) Începeți numele procedurii de la eticheta tipului valorii returnate, dacă există.
3) Exprimați procedura în unul sau două cuvinte. Cuvintele ar trebui să fie separate prin punctuație pentru o parsing mai ușoară de către cititor (metoda obișnuită este de a folosi inițialele pentru fiecare cuvânt).
4) La sfârșitul numelui, puteți adăuga o listă de etichete pentru unii sau toți parametrii formali, dacă există vreun sens.
Ultimul paragraf contrazice comentariile anterioare privind descrierea structurii de date. Dacă se modifică parametrii procedurii, aceasta va duce la schimbarea numelui și a tuturor punctelor apelului procedurii. Cu toate acestea, o astfel de modificare poate fi utilizată pentru a verifica dacă toate punctele de apel ale unei proceduri modificate vor fi de asemenea executate corect. În cazul structurilor de date, adăugarea sau modificarea câmpului nu are o influență decisivă asupra utilizării tipului de date. Dacă procedura are unul sau doi parametri, utilizarea etichetelor va simplifica alegerea numelui.
Tabelul 1. Câteva exemple pentru numele procedurilor