L’importanza del refactoring: l’attività è spesso nominata dagli sviluppatori ma è una di quelle cose che, comprensibilmente, è poco chiara a chi non lavora nel settore. Oggi cerchiamo di fare chiarezza su questo argomento e spiegare qual è il suo obiettivo.
Cos’è il refactoring?
Il refactoring è l’attività di riscrivere il codice già esistente rendendolo più chiaro mantenendo inalterate le funzionalità.
Già da questa definizione possiamo capire una cosa importante: il refactoring non risolve i bug o almeno non è questo il suo scopo.
Durante lo sviluppo l’attività di refactoring è continua per cercare di semplificare e rendere più leggibile il proprio lavoro. Capita spesso che il codice dopo un po’ di tempo risulti problematico e criptico, questo potrebbe essere dovuto a richieste di fix o feature o semplicemente quando:
“Chi è il folle che ha scritto questo codice?”
“…..io”
Mi rendo conto che per alcuni può suonare un po’ strano ma il lavoro del programmatore porta ad uno studio continuo, ogni volta che ci poniamo quella domanda vuol dire che siamo migliorati.
Perché è importante?
L’importanza del refactoring è dovuta anche alla riduzione dei costi
Il tempo usato per fare refactoring è un investimento per rendere più rapide successive modifiche al codice. Un codice leggibile è più semplice da capire e quindi da modificare. Se il codice non viene mai rifattorizzato ogni nuova feature richiederà un tempo sempre maggiore per essere scritta facendo quindi anche lievitare i costi di sviluppo.
Semplicità di onboarding per nuovi componenti del team
Tra i programmatori è risaputo che aumentando il numero dei componenti non è detto che aumenti la velocità di sviluppo. Ci sono diversi cause a questo problema tra cui anche quella che un progetto potrebbe avere una codebase poco chiara.
L’importanza del refactoring nella ricerca di bug
Anche se l’obiettivo del refactoring non è quello di rimuovere i bug, molto spesso semplificando il codice ci si rende conto che non faceva realmente quello che ci aspettavamo.
Quando fare refactoring?
Fare refactoring è un’attività molto delicata, il mio consiglio principale è di lavorare solo in presenza di test automatici che possano confermare il corretto funzionamento delle modifiche.
Purtroppo nella maggior parte dei progetti legacy i test spesso sono pochi o assenti, nel caso una buona pratica potrebbe essere quella di separare il codice che vogliamo modificare e inserire i test solo in quella specifica sezione prima di partire con il refactoring.
In generale ogni volta che si lavora ad un task e il codice che andiamo a modificare è poco chiaro allora è meglio fare del refactoring.
Bisogna però sempre ricordarsi che per quanto il codice può essere sempre migliorato ad un certo punto bisogna fermarsi ed evitare di passare più tempo del necessario a riscrivere il codice