Code reuse ( în engleză code reuse ) este o metodologie de proiectare a computerului și a altor sisteme, care constă în faptul că sistemul ( program de calculator , modul de program) trebuie să fie compus parțial sau complet din părți, componente scrise anterior și/sau părți ale altuia. sistem, iar aceste componente trebuie utilizate de mai multe ori (dacă nu în cadrul aceluiași proiect, atunci cel puțin altele). Reutilizarea este principala metodologie care este utilizată pentru reducerea costurilor cu forța de muncă în dezvoltarea sistemelor complexe.
Cel mai frecvent caz de reutilizare a codului sunt bibliotecile de software . Bibliotecile oferă o funcționalitate comună, destul de universală, care acoperă un domeniu selectat. Exemple: o bibliotecă de funcții pentru lucrul cu numere complexe, o bibliotecă de funcții pentru lucrul cu grafică 3D, o bibliotecă pentru utilizarea protocolului TCP / IP, o bibliotecă pentru lucrul cu baze de date. Dezvoltatorii unui nou program pot folosi bibliotecile existente pentru a-și rezolva problemele și nu „reinventa roata”.
Programatorii tind să-și proiecteze sistemele în așa fel încât să fie cât mai modulare posibil. Ca abstracții, pe baza cărora se poate construi modularitatea sistemului, pot acționa funcții , corutine , clasă , protocol . Biblioteca de funcții este un bun exemplu de abstractizare care este utilă pentru implementarea modularității programului și pentru a urma o metodologie reutilizabilă. Un pas important spre atingerea modularității maxime a fost principiul construcției ierarhice a spațiului de nume .
Un exemplu de implementare cu succes a modularității și a principiului reutilizarii sunt instrumentele shell Unix și clasele Java standard plasate într-o ierarhie a spațiului de nume.
Șabloanele (vezi C++ Standard Template Library STL ) pentru funcții și clase au reprezentat un pas important în progresul metodologiei de reutilizare în industria programării orientate pe obiecte .
Modularitatea ierarhică a sistemului face posibilă implementarea unor metode eficiente de management al dezvoltării bazate pe construcția ierarhiilor de control corespunzătoare ierarhiei modulelor sistemului însuși.
Uneori, reutilizarea codului este pur și simplu copierea unei bucăți de cod dintr-un program existent în altul ( copy-paste ) . Aceasta este una dintre cele mai scăzute abordări de reutilizare. Dar are loc și, mai ales când vine vorba de reutilizarea codului „în mod mic” („reutilizare într-un mod mic”).
Această abordare nu este de obicei recomandată pentru utilizare; în schimb, un fragment de program care se repetă este formatat ca subrutină sau macro cu un set de parametri. Principalul argument în favoarea folosirii subrutinelor în loc de copiere a codului este că, dacă există o eroare, aceasta trebuie remediată o dată în corpul subrutinei, altfel, în general, mai multe fragmente de cod identice situate în locuri diferite ale programului trebuie fi corectat. În plus, atunci când copiați codul, este de obicei nevoia de a schimba numele variabilelor, ceea ce duce adesea la erori mecanice. În cazul utilizării subprogramelor, o astfel de redenumire poate fi evitată prin utilizarea variabilelor locale.
Metoda de reutilizare a codului este o componentă importantă a implementării principiului tranziției metasistemului în dezvoltarea industriei software. Implementarea acestui principiu permite dezvoltatorilor să opereze cu concepte de nivel înalt (afișarea unei imagini, ștergerea unui tabel dintr-o bază de date, găsirea tuturor rădăcinilor unei ecuații, convertirea unui fișier etc.), mai degrabă decât cu concepte de nivel scăzut (culoare). un pixel roșu, resetați registrul, adăugați două numere, citiți un caracter dintr-un fișier etc.).
Luați în considerare avantajele și dezavantajele folosind exemplul bibliotecilor de funcții.
Utilizarea bibliotecilor gata făcute are o serie de avantaje. În primul rând, dezvoltatorul unui nou sistem se scutește de preocuparea cu privire la implementarea funcționalității încorporate în această bibliotecă. Întregul ciclu de dezvoltare a bibliotecii este realizat de către dezvoltatorul acestei biblioteci. De obicei, el își asumă responsabilitatea pentru întreținerea bibliotecii: remedierea erorilor, dezvoltarea și îmbunătățirea muncii, testarea . Metoda de reutilizare a codului este mecanismul care permite dezvoltatorilor să „stea pe umerii giganților” [1] și să construiască rapid noi sisteme complexe din componente deja depanate. Al doilea avantaj vine din însăși repetarea utilizării codului, ceea ce duce la o reducere semnificativă a dimensiunii programului final, iar în cazul performanțelor media insuficiente, la viteză.
Pe lângă câteva avantaje, dar foarte importante, metoda de reutilizare a codului are o serie de dezavantaje. Conectarea bibliotecilor terțe la proiect duce automat la necesitatea controlului compatibilității versiunilor componentelor sistemului care se creează și a versiunilor bibliotecilor utilizate. Cel mai tipic exemplu al unei astfel de erori este considerat a fi accidentul vehiculului de lansare Ariane-5 , cauzat de utilizarea unui modul software dezvoltat pentru racheta Ariane-4 [2] .
De asemenea, este important de menționat că multe biblioteci sunt comerciale și necesită bani (odată cu dezvoltarea mișcării software liber , acest lucru devine treptat mai puțin relevant). În plus, adesea bibliotecile nu sunt suficient de universale și nu implementează funcționalitatea cerută de sistemul care este creat sau, dimpotrivă, sunt prea universale și, ca urmare, sunt ineficiente, incomode sau conțin multe redundante ( pentru un proiect dat) funcţionalitate. Este posibil, dacă licența bibliotecii redistribuibile permite, să se utilizeze codurile sursă și să le modifice în funcție de necesități. Dar după aceea, responsabilitatea pentru susținerea funcționalității bibliotecii este transferată pe umerii dezvoltatorului noului sistem. De asemenea, utilizarea unei modularități excesive poate duce la o scădere a vitezei de execuție a programului, atunci când viteza de execuție inerentă modulului nu poate acoperi costurile accesării acestui modul.