Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Refactoring - Teknopedia
Refactoring - Teknopedia
Abbozzo
Questa voce sull'argomento programmazione è solo un abbozzo.
Contribuisci a migliorarla secondo le convenzioni di Teknopedia.

Con 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.

Descrizione

[modifica | modifica wikitesto]

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),[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 utilizzati

[modifica | modifica wikitesto]

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

  • IntelliJ IDEA (per Java)
  • Eclipse (per Java)
  • NetBeans (per Java)
  • Embarcadero C++ e C (ex Borland C/C++ Builder)
  • Embarcadero Delphi
  • Visual Studio (per piattaforma .NET nelle versioni dal 2003 in poi)
  • PyCharm (per Python)
  • WingIDE 4.x e 5.x di WingWare
  • KomodoIDE
  • PhpStorm per PHP

Note

[modifica | modifica wikitesto]
  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.
  4. ^ a b V. M. Fowler, Refactoring

Bibliografia

[modifica | modifica wikitesto]
  • 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

Voci correlate

[modifica | modifica wikitesto]
  • Automazione del collaudo del software
  • Design pattern
  • Test driven development
  • Programmazione estrema

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Denis Howe, refactoring, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • refactoring.com, raccolta di risorse sul refactoring mantenuta da Martin Fowler
Controllo di autoritàLCCN (EN) sh99002049 · GND (DE) 4784343-3 · J9U (EN, HE) 987007566125005171 · NDL (EN, JA) 01191220
  Portale Informatica
  Portale Ingegneria
Estratto da "https://it.wikipedia.org/w/index.php?title=Refactoring&oldid=143402442"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022