Categoria

Pagina 1 di 3

Refactoring: migliorare il codice esistente senza rompere il business

Refactoring non è riscrivere tutto da capo. È il lavoro meno glamour e più prezioso che uno sviluppatore senior può fare: trasformare una codebase confusa, fragile o lenta in qualcosa di leggibile, testabile e pronto a crescere — mantenendola in produzione mentre la modifichi. Lo faccio da anni su progetti PHP/Laravel di clienti che non possono permettersi un rewrite.

In questa categoria scrivo di tecniche di refactoring applicate: come intervenire su metodi lunghi centinaia di righe, come introdurre test in codice non testato, come estrarre servizi senza rompere le dipendenze, come riconciliare controller obesi o modelli Eloquent che fanno troppo. Il tutto con l'attenzione al rischio di regressione, che è la vera metrica di successo.

Se hai una codebase che rallenta il team, aumenta i bug o rende rischioso ogni rilascio, parliamone: posso fare un assessment e definire un percorso di refactoring incrementale. Oppure scopri come lavoro.

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.

L'architettura del codebase AI-friendly: deep modules, AI come dependency, e perché il debito non si refactora da solo

L'architettura del codebase AI-friendly: deep modules, AI come dependency, e perché il debito non si refactora da solo Architetture pensate per umani aiutano l'AI di più di architetture pensate per l'AI. Moduli profondi con interfacce semplici. AI integrata come dependency lenta e non deterministica, dietro circuit breaker e fallback. E la verità che spinge il mercato in direzione opposta: il debito accumulato oggi non sarà refactorato da nessun modello futuro, perché refactoring richiede intent originale, non sintassi. 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 di un e-commerce torinese con 12 anni di codice procedurale

Migrare un gestionale PHP 5.6 a PHP 8.4 senza riscriverlo: il caso di un e-commerce torinese con 12 anni di codice procedurale Un e-commerce torinese 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:

PHP 8 Enums: sostituire le costanti di classe e i magic strings nei domini di business

PHP 8 Enums: sostituire le costanti di classe e i magic strings nei domini di business Ogni codebase PHP legacy che eredo ha la stessa peste: costanti integer o stringhe magiche per rappresentare stati di business. ORDINE_STATO_1, ORDINE_STATO_2. Con PHP 8 Enums, ho modernizzato un sistema ordini trasformando 40 costanti sparse in enum tipizzati con metodi di dominio. Il codice è diventato leggibile. 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:

PHP 8.3 match expression e named arguments: modernizzare codice legacy senza rischi

PHP 8.3 match expression e named arguments: modernizzare codice legacy senza rischi Modernizzare un'applicazione PHP 7.4 a PHP 8.3 non significa riscrivere tutto - significa sfruttare le nuove feature dove migliorano la leggibilità e la sicurezza. Vi mostro il processo che uso: identificare i candidati giusti per match expression e named arguments, refactoring sicuro con test a tappeto. Continua a leggere
Ultima modifica:

Come introdurre test minimi in un progetto PHP legacy senza bloccare lo sviluppo

Come introdurre test minimi in un progetto PHP legacy senza bloccare lo sviluppo Un gestionale PHP legacy con zero test e 3 regressioni al mese: ogni fix rompeva qualcosa. In 5 giorni ho introdotto 28 smoke test HTTP e 12 snapshot test sulle funzioni di calcolo - senza toccare il codice applicativo. Regressioni in produzione scese da 3/mese a zero nel primo trimestre. Continua a leggere
Ultima modifica:

Refactoring del codice PHP legacy: guida pratica per modernizzare un'applicazione senza riscriverla

Refactoring del codice PHP legacy: guida pratica per modernizzare un'applicazione senza riscriverla Un gestionale PHP 5.6 con 23.000 righe, zero test e debito tecnico che rendeva ogni modifica un rischio: il cliente pagava il triplo per ogni nuova funzionalità rispetto a un'applicazione moderna. In tre mesi di refactoring incrementale con Strangler Fig Pattern, PHPStan e Rector l'ho reso manutenibile senza riscrivere una riga da zero. Continua a leggere
Ultima modifica: