ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 146
Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 27
Abonament PDF

Pragmatism în programare

Mihnea Lazăr
Java Developer
@.msg systems Romania



PROGRAMARE

Pragmatismul ca termen general se referă la abordarea unei sarcini într-o manieră care urmărește aspectul practic și util al abordării, pentru a o face cât mai eficientă.

În domeniul programării, acest termen este adesea cunoscut sub numele de bune practici ale programării. Acestea se referă adesea la scrierea unui cod curat și gestionarea codului într-o formă cât mai eficientă, lizibilă, atât pentru persoana care scrie codul, cât și pentru persoanele care vor citi codul în viitor. Articolul de față va prezenta o serie de idei, care au ca scop îmbunătățirea modului de scriere a codului și a modului în care tratăm proiectele la care lucrăm.

Curățenie și geamuri sparte

În interiorul orașelor mari, se observă adesea cum clădiri îngrijite, în stare bună, pot sta adesea exact lângă alte clădiri, aflate într-o stare foarte proastă. În urma unor studii făcute asupra vandalismului, a fost elaborată "teoria geamului spart", care spune că de la un singur geam spart lăsat nereparat într-o clădire foarte îngrijită, clădirea respectivă poate ajunge în termen de doar câteva luni să fie într-o stare foarte proastă. Respectivul geam spart lăsat nereparat redă locuitorilor din acea clădire, precum și celor din vecinătate, o senzație de abandon, nepăsare, neîngrijire. Așa se mai ajunge la încă un geam spart în scurt timp, care duce la o ușă de la intrare spartă, la graffiti și la probleme structurale mai avansate. Această teorie a fost folosită din anii 80’ în statele americane pentru a reduce rata de vandalitate și a îmbunătăți nivelul de trai al locuitorilor orașelor mari.

Aplicată în mediul software, teoria aceasta încurajează evitarea lăsării "geamurilor sparte" în crearea codului. Aceasta se poate referi la o porțiune de cod neimplementată, la anumite funcționalități lăsate în urmă, sau la o porțiune a unei pagini web lăsate incompletă. Oricare din acestea, odată cu lansarea și folosirea produsului, vor lăsa un gust amar utilizatorului care va folosi respectivul produs și se va lovi de un zid atunci când va dori să acceseze anumite funcționalități care fie vor funcționa eronat, fie vor produce un crash. Astfel, se încurajează o grijă pentru detaliu în realizarea unui proiect, pentru a nu lăsa astfel de elemente incomplete în urmă. Dacă, din lipsă de timp, se întâmplă să trebuiască să lăsăm anumite funcționalități neterminate pentru a trece la alte sarcini mai urgente, se încurajează să "baricadăm" geamul lăsat în urmă. Acest lucru se poate realiza prin comentarea codului care altfel ar returna o eroare sau un crash, prin înlocuirea cu dummy-data, hardcodare sau simpla afișare a unui mesaj de "Under construction".

Duplicare

Duplicarea codului este o problemă ce apare în orice proiect, uneori datorită unei singure persoane care lucrează pe proiect, alteori datorită mai multor persoane, prin lipsă de comunicare. Câteva ponturi pentru a evita această problemă sunt:

Ortogonalitate

Conceptul de ortogonalitate se referă la împărțirea unei aplicații în componente cât mai independente. Se încearcă evitarea creării unei metode sau clase care se ocupă de prea multe sarcini. În cazul unei metode, fiecare ar trebui să aibă un singur rol, scop sau comportament, iar în cazul unei clase, aceasta ar trebui să se ocupe de un singur tip de comportament sau scop.

Atunci când componentele sunt izolate una față de cealaltă, problemele ce apar ulterior sunt detectate mult mai ușor, iar comportamentul lor este mult mai ușor de a fi înțeles și modificat.

Îndeajuns de bun

Adeseori, în situațiile de realizare a unui proiect la care s-a acordat timp insuficient, se propune utilizarea noțiunea de good-enough software. Această noțiune propune o implicare mai mare a utilizatorului, sau end-user-ului în realizarea de software, pentru a evalua mai în detaliu cât de rafinat dorește acesta ca produsul să fie, în comparație cu cât de repede să fie livrat. Se pot întâmpina cazuri în care utilizatorul să dorească un produs livrat rapid, cu funcționalitățile de bază, la care să se poată aduce schimbări și îmbunătățiri cu timpul.

Contracte

Societatea a trebuit, în ultimii ani, să găsească o formă de a rezolva și de a face cât mai eficiente tranzacțiile desfășurate. Dintre soluțiile găsite pentru aceste lucruri, se pot aplica unele și în scrierea de cod. Una din cele mai bune soluții pentru a asigura o tranzacție eficientă o reprezintă scrierea unui contract bun sau a unor specificații tehnice dezvoltate de către și pentru persoanele tehnice care se ocupă de proiect, opțional cu ajutorul persoanelor din domeniul business care se ocupă de proiect.

Acest concept a fost dezvoltat de către Bertrand Meyer, pentru limbajul de programare Eiffel. Este o metodă simplă și puternică ce presupune căderea asupra unui acord și documentarea comportamentului și a obligațiilor modulelor unui proiect, pentru a asigura funcționarea eficientă și corespunzătoare. Astfel, scopul final este de a ajunge la un program care face exact ceea ce se dorește original să facă, nici mai mult, nici mai puțin.

Fiecare parte a programului, oricât de mare sau mică, are un scop de îndeplinit. Astfel, aceste scopuri și așteptări pot fi împărțite în următoarele categorii:

Cunoașterea IDE-ului

Fiecare programator își realizează munca prin intermediul unui limbaj de programare. Cu cât mai bine își cunoaște limbajul de programare ales, cu atât mai bine își poate face munca. Codul realizat cu acest limbaj de programare este scris prin intermediul unui IDE (Integrated development environment). Fiecare IDE oferă o gamă de posibilități pentru asistarea în scrierea de cod. Este astfel de o importanță și utilitate ridicată, să cunoaștem bine mediile de programare în care lucrăm. O cunoaștere bună a IDE-ului poate ușura cu mult sarcinile care trebuie făcute. O primă temă de aprofundare în oricare mediu de programare sunt scurtăturile de la tastatură. A ști să lucrăm într-un IDE fără a folosi mouse-ul îmbunătățește cu mult modul și viteza de lucru. Scurtăturile de bază într-un IDE, care pot elimina nevoile unui mouse, sunt în număr de aproximativ 10 pentru un IDE standard precum Eclipse.

Comunicare

În domeniul programării, comunicarea este un element cheie în munca de zi cu zi. Aceasta se realizează fie cu clienții, fie cu colegii, fie cu mașinăriile, prin scrierea de cod. Este important să știm să comunicăm cât mai eficient. Aici sunt o serie de idei scurte despre comunicarea în mediul dezvoltării software:

Geanta de cunoștințe

Odată cu trecerea timpului, limbajele de programare sunt actualizate, ameliorate sau chiar înlocuite. Fiecare limbaj are propriile sale caracteristici, avantaje și dezavantaje. Proiectele și produsele noi de pe piață cer cunoașterea limbajelor de programare actuale, adaptate nevoilor de performanță actuale. Este astfel necesară menținerea unui bagaj de cunoștințe actualizat periodic. Menținerea unui astfel de portofoliu poate fi comparată cu menținerea unui portofoliu financiar. Astfel avem o serie de idei aplicabile pentru ambele tipuri de portofolii:

Revizuire și reactualizare periodică. Odată la câteva luni, în urma analizelor făcute, putem constata dacă investițiile noi mai prezintă potențial de dezvoltare sau dacă sunt altele cu un potențial mai ridicat.

Idei de investiții:

În acest articol sunt prezentate doar câteva idei asupra îmbunătățirii muncii depuse în domeniul software într-o manieră pragmatică. Sunt idei accesibile, de care este important să ținem cont pentru a ne putea face cât mai bine munca și a avea cât mai multe rezultate bune.

Bibliografie

The Pragmatic Programmer: From Journeyman to Master – Andrew Hunt, David Thomas

NUMĂRUL 145 - Microservices

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects

Mihnea Lazăr a mai scris