Refactoring: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
mNessun oggetto della modifica |
||
Riga 2:
In [[ingegneria del software]], il '''refactoring''' (o '''code refactoring''') è una "tecnica strutturata per modificare la struttura interna di porzioni di [[codice sorgente|codice]] senza modificarne il comportamento esterno",<ref>Martin Fowler in [http://refactoring.com refactoring.com]</ref> 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 posteriori di [[design pattern]].<ref>Joshua Kerievsky, ''Refactoring to Patterns''</ref> Il refactoring è un elemento importante delle principali metodologie emergenti di sviluppo del software (soprattutto [[programmazione orientata agli oggetti|object-oriented]]): per esempio delle [[metodologie agili]], dell'[[extreme programming]], e del [[test driven development]].
== Descrizione ==
Benché 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),<ref>Fowler è tra l'altro l'autore del primo libro sull'argomento: ''Refactoring: Improving the Design of Existing Code'', e mantiene il sito [http://refactoring.com refactoring.com], che raccoglie molte risorse sul refactoring.</ref> il refactoring è in genere motivato dalla rilevazione di un ''[[code smell]]''.<ref name="fowlerbook">V. M. Fowler, ''Refactoring''</ref> Per esempio, un metodo potrebbe apparire eccessivamente lungo e complesso, o contenere molto codice duplicato anche in un altro metodo.
Riga 9:
Il refactoring è un elemento integrante di molti processi di sviluppo fortemente basati su [[automazione del collaudo del software|test automatici]]; per esempio, lo [[test driven development|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à (informatica)|ereditarietà]]).
=== Software per il refactoring ===
Molti [[Integrated development environment|IDE]] forniscono supporto al refactoring del codice. Funzioni di refactoring sono incluse per esempio nei seguenti IDE:
* IntelliJ IDEA (per [[Java (linguaggio di programmazione)|Java]])
|