Stiluri de programare 1

Capitolul 22. Rețeta programului

termenul limită. Scoateți, aruncați și lăsați să se răcească înainte de servire.

Știu cel puțin patru rețete de biscuiți. Diferențele lor sunt determinate de preferințele dvs. - fie că doriți un tort de burete fără unt, fie un tort de burete fără ouă - și modul de gătit. Programul% este scris în același mod. Nu există o formulă de prescripție sau o formulă magică; același sistem poate fi construit în moduri diferite, fiecare dintre care nu poate fi mai bun decât celălalt. Puteți lua diferite ingrediente pentru procesul de dezvoltare și diferite metode. Oricum, rezultatul poate diferi ușor prăjituri coapte - .. Pe funcțiile, structura, stabilitatea, extinde% poduri, mentenanței etc. Retetele descriu ciclul de viață al software-ului. etapele de dezvoltare de la inițialele (satele programului zamy%) până la final (încetarea funcționării).







Programatorii ar trebui să creeze, în mod previzibil (și, într-o oarecare măsură, să reproducă) programe software, în urma unei proceduri definite. Trebuie să ne atragem o metodologie de dezvoltare care ne va permite să creăm cele mai bune programe posibile. În acest capitol, vom afla câteva rețete pentru crearea de programe; vom compara, vom contrasta, vom critica și vom vedea ce impact au asupra codului pe care îl creăm.

Programatorii buni știu cum să programeze - cunosc metodele și metodele de lucru.

Care sunt aceste rețete de programare?

Stilul de programare descrie modul în care sarcina este planificată pentru a fi rezolvată, modul în care este împărțită în părți și modelată în limba selectată. Trebuie să creăm modele de decizie, deoarece un sistem util nu se poate încadra în întregime în capul dezvoltatorului. Stilul de programare determină modul în care împărțim proiectul în părți controlabile; Aceasta este paradigma de proiectare care servește pentru a exprima sarcinile codului dvs.

Diferitele stiluri de programare corespund diferitelor stiluri de programare. Unele stiluri sunt adaptate unei anumite limbi, altele

• Limbile de procedură vă permit să specificați succesiunea pașilor care conduc la rezultat. Aceasta este ceea ce majoritatea programatorilor sunt obișnuiți.

• Limbile descriptive descriu relațiile dintre variabile în limba regulilor de inferență (sau funcții), iar pentru a obține rezultatul, sistemul executiv al limbii se aplică acestor reguli ce tip de algoritm fix. (Această descriere poate deveni mai inteligibilă după ce luăm în considerare programarea funcțională și logică.)

Alegerea limbajului de programare este parțial determinată de stil. (Este mai bine să alegeți o limbă care să suporte stilul pe care doriți să îl utilizați.) Cu toate acestea, alegerea unui limbaj de programare nu este cel mai important lucru. Este perfect posibil să scrieți un cod structurat într-un limbaj orientat pe obiecte, așa cum puteți scrie un cod dezgustător în orice limbă. Următoarele secțiuni descriu stilurile populare de programare.

Programare structurată

În această metodă standard de proiectare procedurală se utilizează descompunerea algoritmică - procesul de împărțire a sistemului în părți, fiecare reprezentând un pas mic într-un proces mai amplu. Soluțiile de proiectare sunt direcționate către fluxul de control și creează o structură funcțională ierarhică. Așa cum Dijkstra a scris: „Sistemele ierarhizate au proprietatea că NOSTA% substantiv, considerat la același nivel indivizibilă, este privit ca un obiect compozit la următorul nivel inferior de detaliere; Drept urmare, granulele naturale de spațiu sau timp, care sunt aplicabile la fiecare nivel, scad cu un ordin de mărime când ne îndreptăm atenția spre următorul nivel inferior. Noi govo% RIM a peretelui în ceea ce privește cărămizi pe cărămizi - în termeni de cristal% captura de cristale - în termeni de molecule, etc „Deci Dijkstra fundul% lyariziroval programare structurată în articolul său clasic«Mergi Declaratie considerate dăunătoare».. (Operatorul Go To este dăunător). (Dijkstra 68)







Programarea structurată este un model axat pe management și pe următorul model de design de sus în jos. Voi începeți ete% cu care concepe întregul programul lor (de exemplu, ETS lat_pokupki), atunci acesta este descompus într-o serie de sub-blocuri (de exemplu, constau vit_spisok_pokupok, vyyti_iz_doma, doyti_do_magazina, vybrat_pokupki, curse platitsya_v_kasse, vernutsya_domoy). La rândul său, fiecare subbloc se descompune în părți până la atingerea unui nivel la care este ușor să se scrie o implementare în cod. Blocurile vor fi intacte, iar proiectul se va termina aici.

Capitolul 22. Rețeta programului

Abordarea structurală are următoarele consecințe:

• Fiecare pas al descompunerii trebuie să fie în limitele înțelegerii rezonabile a programatorului. (Dijkstra a spus: "Propun să limitez proiectarea și implementarea programelor care sunt înțelese de termen.")

• Fluxul de control trebuie să fie monitorizate cu atenție: Evitați Goto operatorului teribil (nestructurate în program spațiu de tranziție pro% liber) și a scrie funcții cu o singură intrare și ode% randament (așa-numitul cod sese).

• Structura codului este furnizată de construcții ciclice și instrucțiuni condiționale în cadrul blocurilor de funcții. Relația cu ieșirea precoce în mijlocul ciclului sau de la blocul închis este la fel de indignată ca și cea de la goană.

Limbile comune ale programării structurale sunt C, Pascal, BASIC și mai vechi, cum ar fi Fortran și COBOL. Cu ajutorul celor mai multe limbi procedurale, un cod structurat este ușor de scris, deși aceasta nu este specializarea lor; programatorii programatici acceptă adesea limbi moderne, dar nu acceptă noi idiomuri. 1

Booch descrie programarea GS% „, metoda de punere în aplicare în care sunt organizate programe sub formă de obiecte care interacționează, fiecare dintre acestea reprezintă o instanță este% din care clasă și clase formează o structură ierarhică, Ba% en la relații de moștenire.» (Booch 94 ) Acesta este și un stil procedural, dar permite o modalitate mai naturală de a modela realitatea; ne îndreptăm atenția asupra entităților interoperabile simulate, mai degrabă decât asupra unui flux specific de execuție.

Acest model este construit în mare parte în jurul datelor (spre deosebire de programarea structurală, unde procesele sunt situate în centru). Suntem interesați aici în viața datelor și în mișcarea lor, și nu în secvența acțiunilor care trebuie întreprinse pentru a rezolva problema. Obiectele (datele) au un comportament (fac ceea ce fac) și de stat (care se schimbă ca rezultat al acțiunilor). La nivel de limbă, aceasta este implementată ca metodă de clasă obiect. Programul OO% este tratat ca un set de componente software interactiv, nu liste de instrucțiuni monolitice ale CPU. Proiectul OO% ne-a permis să modelam în mod eficient sistemele mari.

În programarea orientată obiect, se folosesc următoarele concepte de informatică:

1 Acest lucru nu este neapărat rău, cu excepția cazului în care programatorul crede că a depășit limitele codării structurale, fără a-și schimba modul de elaborare a codului.

Reprezentarea ierarhiei Dijkstra (reveniți la ea și citiți din nou) a deschis un anumit fel de abstractizare.

Encapsularea se referă la plasarea blocurilor interconectate într-un singur pachet, acces la care se face doar printr-un API bine definit: o capsulă pentru cod. Utilizatorii acestei capsule pot accesa numai API-ul specificat, dar nu au acces direct la starea internă. Aceasta oferă o repartizare clară a responsabilităților, dă posibilitatea de a specula pe întrebări metafizice, cum ar fi "Ce este un obiect? "Și oferă unele asigurări că niciun atacator nu va putea să sapă în codul dvs. atunci când vă întoarceți.

Acesta este mecanismul pentru crearea obiectelor care sunt o versiune specială a părintelui. Să presupunem că tipul de părinte este numit Figura și moștenirea îi este dată de un Pătrat, un Cerc și un Triunghi. Moștenitorii au un comportament mai detaliat și mai specializat (de exemplu, știu câte părți au figura). Ca orice idei în programare, moștenirea poate servi drept bază pentru crearea unor programe ciudate și ciudate și poate fi utilizată în codul logic corect și elegant. Bine OO% programatori pot crea ierarhii ereditare eficiente.

Această proprietate permite aceluiași cod să acționeze pe date de diferite tipuri (care în OO% din limbi sunt de obicei denumite clase%) utilizând contextul în care codul este executat. Această tehnologie accentuează programarea în funcție de interfețele definite explicit, mai degrabă decât implementările implicite - polimorfismul oferă o separare clară a responsabilităților la scrierea codului. Polimorfismul poate fi de două tipuri: dinamic și static.

Polimorfismul dinamic, în conformitate cu numele acestuia, determină funcționarea efectivă la etapa de execuție, în funcție de tipul operandului sau obiectul țintă. Se folosește adesea uc% moștenire ierarhie: client care rulează tip figură, în cazul specific se poate lucra cu obiecte, cum ar fi Quad șobolan sau triunghi, așa cum sa determinat în timpul rulării.







Articole similare

Trimiteți-le prietenilor: