RefactoringCon refactoring (o code refactoring), nell'ingegneria del software, si indica 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 quali la leggibilità, la manutenibilità, la riusabilità, l'estensibilità del codice nonché la riduzione della sua complessità, eventualmente attraverso l'introduzione a posteriori di design pattern.[2] Si tratta di un elemento importante delle principali metodologie emergenti di sviluppo del software (soprattutto object-oriented), per esempio delle metodologie agili, dell'extreme programming, e del test driven development. DescrizioneBenché il concetto generale di refactoring possa essere applicato in qualsiasi contesto di sviluppo software, nelle metodologie agili e nell'extreme programming il termine è usato prevalentemente nel contesto della programmazione orientata agli oggetti. In questa accezione stretta (proposta originariamente da Martin Fowler, che è tuttora uno degli autori più influenti sull'argomento),[3] il refactoring è in genere motivato dalla rilevazione di un code smell.[4] Per esempio, un metodo potrebbe apparire eccessivamente lungo e complesso, o contenere molto codice duplicato anche in un altro metodo. L'azione di refactoring mira a eliminare il problema (per esempio portando a fattor comune il codice duplicato) attraverso una serie di "micro-passi" il più possibile semplici.[4] Il requisito di semplicità delle singole modifiche ha due giustificazioni: ridurre il rischio di introdurre errori con la modifica, e rendere ipotizzabile l'esecuzione automatica della modifica stessa da parte di strumenti integrati negli IDE. Gran parte della letteratura sul refactoring descrive tipi di micro-modifiche di uso comune che, combinate in sequenza, possono portare a ristrutturazioni anche radicali del software, e molte delle azioni di refactoring proposte in letteratura sono implementate da IDE moderni come Eclipse. Il refactoring è un elemento integrante di molti processi di sviluppo fortemente basati su test automatici; per esempio, lo sviluppo basato su test (TDD) prevede una fase (obbligatoria ed esplicita) di refactoring al termine di ogni ciclo di modifica. Fra i due concetti esiste infatti un legame molto stretto: rieseguire eventuali test automatici al termine di ogni micromodifica fornisce infatti un più alto grado di confidenza che non siano stati introdotti errori; questo consente di prendere in considerazione anche modifiche particolarmente pericolose (come lo spostamento di codice fra classi o la modifica delle relazioni di ereditarietà). Software utilizzatiMolti IDE forniscono supporto al refactoring del codice. Funzioni di refactoring sono incluse per esempio nei seguenti IDE:
Note
Bibliografia
Voci correlateCollegamenti esterni
|
Portal di Ensiklopedia Dunia