Refactoring: Teoria e Pratica - Corso Aziendale


Il software e' per natura vivo, dinamico, in continua manutenzione ed evoluzione. Tuttavia, se non prestiamo la dovuta attenzione, molte buone proprieta' del software (estendibilita', manutenibilita', riusabilita') tendono a diminuire ed a degradare nel tempo.

L'idea di fondo del refactoring e' estremamente semplice: mantenere in buona salute il codice durante la sua naturale evoluzione. Questo e' importante al di la' del processo di sviluppo, sia questo orientato alla produzione di codice immediatamente funzionante, sia che passi attraverso una fase piu' o meno lunga di design. Molte tecniche di refactoring si applicano infatti ad una granularita' piuttosto fine, e permettono sia la creazione di una architettura emergente che il mantenimento di una struttura portante progettata in precedenza.

Il corso e' decisamente hands-on, sia nella presentazione delle tecniche che nella conduzione degli esercizi.

Dettagli sul corso

Durata: 1-2 giorni

Partecipanti: massimo 15

Prerequisiti: Esperienza di sviluppo in linguaggi Object Oriented.

Programma del corso:

Fundamental concepts
Refactoring: meaning, use, risks
Relationship with Design Patterns
Refactoring and Extreme Programming

Bad Smells in Code (common forms of problematic code)
Duplicated Code
Large Class
Long Method
Long Parameter List
Lazy Class
Data Class
Inappropriate Intimacy
Feature Envy
Data Clumps
Message Chain
Middle Man
Switch Statements
Primitive Obsession

Refactoring Techniques
Extract Method
Move Method
Pull Up Field / Pull Up Method
Form Template Method
Extract Class
Replace Method with Method Object
Replace Data Value with Object
Replace Array with Object
Decompose Conditional
Preserve Whole Object
Introduce Parameter Object
Collapse Hierarchy
Inline Class
Replace Inheritance with Delegation
Hide Delegate
Remove Middle Man
Replace Delegation with Inheritance
Replace Conditional with Polymorphism
Replace Type Code with Subclasses
Introduce Null Object
Replace Temp with Query

Example / Exercise (Fowler’s Video Rental)

More Bad Smells
Divergent Change
Shotgun Surgery
Parallel Inheritance Hierarchies
Speculative Generality
Alternative classes with different interfaces
Temporary Field
Refused Bequest
Comment
Incomplete class library (or library class? :-)

More Refactoring Techniques
Change Reference to Value
Introduce Explaining Variable
Introduce Assertion
Consolidate Conditional Expression
Consolidate Duplicate Conditional Fragments
Duplicate Observed Data
Replace Constructor with Factory Method
Introduce Foreign Method
Introduce Local Extension

More Exercises

Bibliography



Se siete interessati a questo seminario aziendale, potete compilare la seguente richiesta di contatto per fissare un possibile incontro.


  torna alla pagina dei corsi