„Am avut nopți nedormite încercând să adaug caracteristici în codul pe care l-am achiziționat de la altă companie. Am de-a face cu cea mai pură formă de Legacy Code”
„Îmi este foarte greu să mă descurc cu codul încâlcit și nestructurat cu care trebuie să lucrez, dar pe care nu-l înțeleg deloc. Legacy Code !”
Legacy Code este un termen care, probabil, are o mulțime de definiții diferite, cum ar fi -cod achiziționat de la altcineva, cod scris de altcineva, cod care este greu de înțeles sau cod scris în tehnologii învechite. Oricare ar fi definiția, cei mai mulți dintre noi credem că codul moștenit este înfricoșător.
Întrebare> Cum ați defini codul moștenit?
Definirea codului moștenit
Michael Feathers în cartea sa „Working Effectively with Legacy Code” definește codul moștenit ca, cod fără teste.
Codul fără teste este un cod prost. Nu contează cât de bine este scris; cât de bine este structurat; cât de bine este încapsulat. fără teste nu există nicio modalitate de a spune dacă codul nostru se îmbunătățește sau se înrăutățește.
Bine, o versiune ușor modificată a acestei definiții este „codul fără teste de unitate se numește cod moștenit”. Este întotdeauna mai bine să avem teste cât mai aproape de cod (teste unitare > teste de integrare > teste UI). Așadar, nu ar fi nedrept să numim un cod fără teste unitare cod moștenit.
Lucrul cu codul moștenit
Întrebare> Ce abordare veți adopta dacă ar trebui să faceți o modificare în codul moștenit?
Majoritatea dintre noi ar putea spune: „Voi face modificarea și o voi numi o zi, de ce să ne mai chinuim să îmbunătățim codul”. Raționamentul din spatele acestui proces de gândire ar putea fi –
Nu am suficient timp pentru a refactoriza codul, aș prefera să fac o modificare și să-mi finalizez povestea
De ce să risc să schimb structura codului care rulează în producție de mult timp
Care este beneficiul general al refactorizării codului moștenit
Michael Feathers numește acest stil de a face o modificare „Edit and Pray”. Planificați și faceți modificările, iar când ați terminat, vă rugați și vă rugați și mai mult pentru ca modificările să fie corecte.
Cu acest stil, nu se poate contribui decât la creșterea codului moștenit.
Există un stil diferit de a face modificări care este Cover and Modify (Acoperă și Modifică). Construiți o plasă de siguranță, faceți modificări în sistem, lăsați plasa de siguranță să ofere feedback și lucrați pe baza acestor feedback-uri.
Se poate presupune în mod sigur că Cover and Modify este o cale de urmat pentru a face față codului moștenit.
Întrebare> Dar, ar trebui chiar să vă petreceți timpul scriind teste în codul moștenit sau chiar să vă gândiți la refactorizarea unui cod moștenit?