Refactoring

tecnica che consente di modificare del codice lasciando il suo comportamento invariato

In ingegneria del software, il refactoring (o code refactoring) è una "tecnica strutturata per modificare la struttura interna di porzioni di codice senza modificarne il comportamento esterno",[1] applicata per migliorare alcune caratteristiche non funzionali del software. I vantaggi che il refactoring persegue riguardano in genere un miglioramento della leggibilità della manutenibilità, della riusabilità e dell'estendibilità del codice e la riduzione della sua complessità, eventualmente attraverso l'introduzione a posteriore di design pattern.[2]

Nella forma proposta originariamente da Martin Fowler, che è uno degli autori più influenti sull'argomento,[3] il refactoring viene eseguito attraverso una serie di micro-passi, ciascuno dei quali consiste di una modifica molto limitata (e quindi che comporta un basso rischio di introdurre errori), ma che combinati fra loro possono portare a ristrutturazioni significative del codice. Molti ambienti di sviluppo forniscono strumenti automatici per applicare le più tipiche micro-trasformazioni del codice usate nel refactoring.

Il refactoring è spesso associato all'uso di tecniche di test automatici sul codice, applicati a valle di ciascuna micro-modifica per verificare che le funzioni del codice siano state correttamente preservate. In particolare, lo sviluppo basato su test (TDD) prevede una fase esplicita di refactoring al termine di ogni ciclo di modifica.

Software per il refactoring

Molti IDE forniscono supporto al refactoring del codice. Funzioni di refactoring sono incluse per esempio nei seguenti IDE:

Voci correlate

Note

  1. ^ Martin Fowler in refactoring.com
  2. ^ Joshua Kerievsky, Refactoring to Patterns
  3. ^ Fowler è tra l'altro l'autore del primo libro sull'argomento: Refactoring: Improving the Design of Existing Code, e mantiene il sito refactoring.com, che raccoglie molte risorse sul refactoring.

Bibliografia

  • Martin Fowler, Kent Beck, John Brant e William Opdyke, Refactoring: Improving the Design of Existing Code
  • Joshua Kerievsky, Refactoring to Patterns
  • William C. Wake, Refactoring Workbook

Collegamenti esterni

Voci correlate