Un stil de programare este un set de tehnici sau tehnici de programare pe care programatorii le folosesc pentru a obține programele corecte, eficiente, ușor de utilizat și ușor de citit. (Glosar de termeni tehnici)
Stilul de programare, care înțelege stilul programelor de proiectare și "structurale" ale acestora, afectează în mod semnificativ și lizibilitatea codului programului și numărul de erori de programare.
Principiile de bază ale formatării
Principala teoremă a formatării spune că o bună formatare vizuală arată structura logică a programului. Crearea unui cod frumos este bună, și demonstrarea structurii codului este mai bună. Dacă o tehnică arată mai bine structura codului, iar cealaltă arată mai frumoasă, ar trebui să utilizați una care să demonstreze mai bine structura.
Formatarea este cheia structurii programului. Computerul este interesat numai de informații despre paranteze sau operatori, încep și termină. iar cititorul este înclinat să tragă concluzii din reprezentarea vizuală a codului.
Pentru i: = 1 la 10 nu
Obiective pentru o bună formatare
Vorbind obiectiv, o schemă bună de formatare ar trebui să facă următoarele:
reprezintă cu exactitate structura logică a codului. Pentru a demonstra o structură logică, programatorii folosesc de obicei liniuțe și alte caractere ne-afișate;
prezintă uniform structura logică a codului. Unele stiluri de formatare constau în reguli cu atât de multe excepții încât este aproape imposibil să le respectăm în mod constant. Stilul foarte bun se potrivește în majoritatea cazurilor;
pentru a rezista procedurii de corectare. Cele mai bune scheme de formare tolerează bine modificarea codului. Executarea unei linii nu ar trebui să ducă la schimbarea altor câteva.
În plus față de aceste criterii, este luată uneori în considerare sarcina de a minimiza numărul de linii de cod necesare pentru a implementa o expresie sau un bloc simplu.
Puteți obține un format de cod bun, diferit utilizând mai multe instrumente pentru formatare.
Utilizați caractere care nu sunt afișate pentru a îmbunătăți lizibilitatea. Caracterele neselectate, care includ spații, file, pauze de linii și linii goale, reprezintă mijloacele principale pentru demonstrarea structurii programului.
Gruparea expresiilor interconectate este un alt mod de utilizare a simbolurilor care nu sunt afișate.
În literatură, gândurile sunt grupate în paragrafe. Un paragraf bine scris conține propoziții care se referă numai la o idee specifică. Nu ar trebui să conțină oferte străine. În mod similar, paragraful codului ar trebui să conțină numai operatori interconectați care efectuează o singură sarcină.
Liniile goale. În plus față de necesitatea de a grupa operatorii interconectați, este foarte important să se separe expresiile care nu au legătură între ele. Începutul unui nou paragraf din carte este notat cu
indentare sau un șir gol. Începutul unui nou paragraf din cod trebuie specificat utilizând un șir gol.
Deși aceste statistici sunt dificil de aplicat în practică, dar un studiu a arătat că numărul optim de linii goale din program este de la 8 la 16%. Dacă este mai mult de 16%, atunci timpul petrecut de depanare crește semnificativ
Indents. Utilizați liniuțe pentru a demonstra structura logică a programului. În mod obișnuit, operatorii sunt despărțiți atunci când urmează o anumită expresie, de care depind logic. Injectele optime sunt din 2-4 spații.
Utilizați paranteze mai des decât credeți că este necesar. Utilizați paranteze pentru a clarifica expresii formate din doi sau mai mulți membri. Poate că nu este nevoie de paranteze, dar ele adaugă claritate și nimic nu merită pentru tine. De exemplu, spune-mi cum se evaluează următoarea expresie.
Varianta în C ++: 12 + 4% 3 * 7/8.
Trebuie să te gândești la modul în care sunt calculate aceste expresii, asta e întrebarea? Puteți fi sigur de răspunsul dvs. fără referire la informații? Chiar și programatorii cu experiență nu răspund cu încredere totală, motiv pentru care ar trebui să folosiți paranteze, dacă există chiar și cea mai mică îndoială cu privire la modul în care se calculează expresia.
• Programare din state;
• Programarea de la evenimente;
• Programare din procese și priorități;
• În programarea de la state, procesul este reprezentat ca o schimbare în starea sistemului. O stare nouă apare ca urmare a unei acțiuni care modifică starea veche, iar alegerea acestei acțiuni depinde de verificarea condițiilor. Automatul matematic al programului este mașina de stare finită. O invarianță a aplicabilității acestui stil este următoarea caracteristică a problemei:
• Acțiunile sunt globale, condițiile sunt locale.
• O modalitate firească de a programa o astfel de sarcină în limbile moderne de programare este utilizarea operatorilor sau obiectelor care au schimbat informații într-un câmp comun de memorie.
• În programarea structurală. care este acum predată ca un monopol de primul nivel de stil, acțiunile și condițiile sunt locale. Acțiunile de control formează o structură ierarhică, iar fluxurile de date trebuie, în principiu, să fie în concordanță cu această structură. Acest stil este susținut de structurile limbajelor moderne tradiționale de programare (de exemplu, Pascal, C). Modelul matematic al programelor este funcțiile computerizate.
• În stil sentențios (Refal, Prolog), acțiunile și condițiile sunt globale. Fiecare pas al programului verifică întregul câmp vizual pentru potrivirea modelului, găsește regula de conversie aplicabilă și, în conformitate cu regula găsită, convertește întregul câmp de memorie.
• Programarea pe Prolog este în mod tradițional numită logică. Din logică nu mai rămâne nimic și termenul este înșelător (și chiar dacă ar fi fost lăsat, logica aici a fost doar o unealtă și punerea instrumentului de beton înaintea conceptului este la fel ca și căruța în fața calului).
• În programarea de la evenimente și de la priorități, acțiunile sunt locale, condițiile sunt globale. Condiția este că a apărut un eveniment în sistem, cel mai bun manipulator care sa dovedit a fi această acțiune. Dar, în programarea de la evenimente, un astfel de eveniment (de exemplu, faceți clic pe mouse) furnizează procesorului de proces informații importante (de exemplu, despre locul clicului). Iar atunci când se programează de la priorități, evenimentul este că toate procesele cu prioritate mai mult nu pot face nimic și nu dau nicio informație pozitivă activării procesului.
• Alte stiluri apar la nivelul conceptelor de nivel superior.
• Stilul de programare funcțională, atunci când programul este un funcțional la nivel înalt care convertește funcțiile, este reprezentat de limbile LISP și ML. Dacă funcțiile sunt tipizate, atunci această abordare, păstrând în același timp capabilitățile unor concepte de nivel superior, este extrem de compactă pentru a exprima o structură complexă, în plus este extrem de eficientă în utilizarea resurselor. Dar implementările curente ale programării funcționale nu se pot abține de la folosirea recurențelor și construcțiilor atipice, cum ar fi operatorul de calcul pentru o expresie arbitrară sau un operator de puncte fixe. Acest lucru a creat o programare funcțională o reputație pentru un stil extrem de ineficient, potrivit doar pentru programele prototip. Logica intuiționistă a predicatelor (varianta tastată) și logica combinatorică (varianta unită) corespund stilului funcțional.