Refactoring: Uno step per volta

Anni fa, quando avevo iniziato a scrivere una applicazione web in Laravel, avevo messo tutto all’interno del singolo controller tutta la logica che avevo. Questo, anche se era stato veloce, iniziavo ad avere problemi visto che era diventato lungo e “pesante” a livello mentale ( aka Debito tecnico).

Al che, dopo che avevo letto qualche libro come Clean Code, mi sono detto: “Qui è ora di pulire tutto il codice”.

Non era stato complicato, con le poche regole che avevo appreso avevo iniziato a ridurre drasticamente la lunghezza delle funzioni e adesso riuscivo a gestire molto meglio quel controller, senza perdermi nella mega funzione, trasformandola in tanti pezzi “specializzati”.

Ma da solo non è abbastanza

C’era ancora qualche problema che mi bloccava nel fare refactoring e non capivo bene.
Da solo, anche se è già molto utile, non è semplice farlo se non abbini un altro strumento molto importante: i test ( e qui troverai l’altro articolo in cui spiego l’importanza).

Questo perché, ogni volta che cambiavo una singola parte, dovevo, per essere sicuro di non aver fatto danni, riprovare tutte le casistiche del codice dove avevo fatto il refactoring.

E adesso, con il codice sistemato?

E, dopo averlo sistemato, mi sono trovato molto a mio agio.
Un po’ come quando sistemi un magazzino, in cui si trova molto più facilmente quello che ci serve quando viene strutturato nella maniera migliore.

Ma se tutto è un disastro?

Proprio grazie ai test ( si sono molto pressante su questa parte 😅​), l’importante è fare un passo alla volta.

Perchè quando si pensa “o tutto o niente” ci si blocca. E quindi, anche se non si può fare tutto in un colpo, si può pensare alla singola azione, semplice, che può essere utile per il futuro.

Una semplice cambio di nome di variabile, un estrazione di una porzione di codice per metterlo in una funzione, passi semplici, ma che poi ti permettono a far si che il tuo cervello abbia meno carico di lavoro, perché è più semplice da capire.

Perchè lo fai?

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”

Martin Fowler

Questa frase mi ha dato la spinta per migliorare il codice, nel trasformarlo in una lettura piacevole, nel poter spostare la tua fatica cognitiva dal capirlo ad usarlo per produrre quello che si vuole.

Cosa che quando ero alle superiori facevo l’opposto, come puoi leggere nel secondo esempio di Ma in che modo un programmatore è uno scrittore? dell’articolo La scrittura e il codice: binomio.

Conclusione

Quando lo inizi ad applicare regolarmente, ti ritrovi a creare un posto migliore, senza aver speso troppe energie, usando solo un piccolo passo alla volta.