Categoria

Pagina 1 di 5

Refactoring: migliorare il codice esistente senza rompere il business

Refactoring non è riscrivere tutto da capo. È il lavoro meno appariscente e più prezioso che uno sviluppatore senior possa fare: trasformare una codebase confusa, fragile o lenta in qualcosa di leggibile e testabile, tenendola in produzione mentre la modifichi. In questa categoria raccolgo il metodo con cui si interviene su codice reale, quello che le PMI hanno davvero, non quello dei tutorial.

Il primo tema è il subentro sull'ignoto. Molto del mio lavoro comincia con una base ereditata, senza documentazione, spesso dopo la sparizione dello sviluppatore originale: migliaia di righe da capire, credenziali da recuperare, un business che intanto deve continuare a girare. Scrivo del metodo per mappare in pochi giorni cosa hai davanti, del reverse engineering sistematico e del protocollo delle prime ore quando la situazione è un'emergenza.

Il secondo tema è la modernizzazione senza rotture: portare avanti una base PHP legacy o un framework fuori supporto attraverso le versioni, gestendo i cambi di comportamento silenziosi che sono il vero rischio. La metrica che conta è sempre il rischio di regressione, e l'approccio è incrementale, misurabile e reversibile, così che il software funzioni come prima ma diventi finalmente modificabile.

Il terzo tema è il debito tecnico come questione aziendale. Il debito non è un problema estetico da sviluppatori: ha un costo che si può calcolare e presentare al management, ed è una scelta strategica decidere quando pagarlo. Racconto come si porta questa conversazione fuori dal reparto tecnico, dove le decisioni si prendono davvero.

Se hai una codebase che rallenta il team, vedi la consulenza IT e DevOps o parliamone.

Il refactoring ben fatto si vede dal fatto che nessuno se ne accorge: il software funziona come prima, ma adesso si può toccare senza paura.

Dal vecchio mysql_ a mysqli e PDO: come si fa davvero il porting nel 2026

Dal vecchio mysql_ a mysqli e PDO: come si fa davvero il porting nel 2026 Le funzioni mysql_ di PHP sono deprecate dalla 5.5 e rimosse dalla 7.0. Un'applicazione che le contiene ancora gira per forza su una versione di PHP fuori supporto da circa dieci anni: non un problema di stile, ma una falla di sicurezza che cammina. Questo articolo rifà la guida al porting con l'occhio del 2026: cosa fa un convertitore automatico e dove ti lascia scoperto, mysqli o PDO, e perché la posta in gioco non è la deprecazione ma l'SQL injection che il vecchio codice si porta dietro. Continua a leggere
Ultima modifica:

Automatizzare la revisione tecnica del codice ereditato: dalla paura all'analisi sistematica

Automatizzare la revisione tecnica del codice ereditato: dalla paura all'analisi sistematica La prima settimana su un progetto legacy è sempre disorientante. Ho sviluppato un processo sistematico di audit tecnico in 5 fasi: analisi statica con PHPStan, complessità ciclomatica con PHP Metrics, mappa delle dipendenze esterne, test di copertura esistente e interviste al team. Output: un report con priorità chiare. Continua a leggere
Ultima modifica:

Migrare un gestionale PHP 5.6 a PHP 8.4 senza riscriverlo: il caso reale di un e-commerce B2B con 12 anni di codice procedurale

Migrare un gestionale PHP 5.6 a PHP 8.4 senza riscriverlo: il caso reale di un e-commerce B2B con 12 anni di codice procedurale Un e-commerce B2B con 47.000 righe di PHP 5.6 procedurale, 340 chiamate mysql_connect(), un hosting che aveva annunciato la rimozione di PHP 5.6 entro 60 giorni, e un titolare che non poteva permettersi downtime. In quattro settimane l'ho migrato a PHP 8.4 senza riscrivere l'applicazione: ecco il metodo, gli strumenti, le breaking changes reali e le decisioni che hanno fatto la differenza. Continua a leggere
Ultima modifica:

Migrazione da Symfony 5 a Symfony 7: guida pratica con casi reali di breaking change

Migrazione da Symfony 5 a Symfony 7: guida pratica con casi reali di breaking change Ho migrato tre applicazioni da Symfony 5 a Symfony 7 in produzione. Il percorso non è una singola migrazione: si passa per Symfony 6 gestendo ogni set di deprecation progressivamente. Vi racconto i breaking change che mi hanno sorpreso di più, le scorciatoie che non funzionano e il processo sistematico che uso. Continua a leggere
Ultima modifica:

Migrazione PHP 7.4 a 8.3 LLM-assisted: il workflow che trasforma 200.000 righe in settimane invece di mesi

Migrazione PHP 7.4 a 8.3 LLM-assisted: il workflow che trasforma 200.000 righe in settimane invece di mesi Migrare 200.000 righe di PHP da 7.4 a 8.3 manualmente è un progetto da 2-3 mesi. Con un workflow LLM-assisted scende a 2-3 settimane senza sacrificare qualità. Nella mia pipeline combino Rector per le trasformazioni meccaniche, Claude per i breaking change complessi, test caratterizzanti generati dal LLM, regression testing incrementale. Ti mostro il workflow reale con tempi giornalieri e le trappole tipiche. Continua a leggere
Ultima modifica:

Il debito tecnico ha un costo reale: come calcolarlo e presentarlo al management

Il debito tecnico ha un costo reale: come calcolarlo e presentarlo al management Un CTO mi ha chiesto di convincere il suo CEO a investire in refactoring. Ho costruito un modello di costo basato su dati reali: tempo medio per aggiungere una feature, numero di bug per rilascio, costo orario del team. Il debito tecnico costava all'azienda 180.000€/anno in produttività persa. Il CEO ha approvato. Continua a leggere
Ultima modifica:

Migrazione da monolite a microservizi: il metodo Strangler Fig applicato a Laravel

Migrazione da monolite a microservizi: il metodo Strangler Fig applicato a Laravel La 'riscrittura totale' è quasi sempre un errore. Con il pattern Strangler Fig ho aiutato una società logistica a estrarre gradualmente funzionalità dal loro monolite Laravel: prima il modulo di tracking, poi la fatturazione. Due anni dopo, tre microservizi autonomi e il monolite ridotto del 40%, sempre in produzione. Continua a leggere
Ultima modifica:

API versioning in Laravel: strategie pratiche per API pubbliche che evolvono senza rotture

API versioning in Laravel: strategie pratiche per API pubbliche che evolvono senza rotture Ho ereditato un'API Laravel usata da 40 integratori terzi senza versioning. Aggiungere un campo obbligatorio era un problema diplomatico prima che tecnico. Vi mostro le strategie di versioning che ho adottato, come ho introdotto il versioning retroattivamente e il contratto di deprecation che uso con i clienti API. Continua a leggere
Ultima modifica:

Strumenti utili per il refactoring

Tool gratuiti per analizzare il codice esistente:

Audit del composer.lock, Regex tester.