Code Refactoring

K-Tech Formazione
A Roma

1.180 
+IVA
Vuoi parlare del corso con un consulente?
Confronta questo corso con altri simili
Leggi tutto

Informazione importanti

  • Corso
  • Roma
  • Durata:
    5 Giorni
Descrizione

Obiettivo del corso: Il corso di Code Refactoring ha l'obiettivo di mostrare ai partecipanti i diversi approcci al refactoring: preventivo e correttivo. Particolare attenzione verrà posta nell'identificazione e rimozione dei code smells mediante le principali tecniche di refactoring.
Rivolto a: Il corso di Code Refactoring si rivolge a designer e sviluppatori.

Informazione importanti
Sedi

Dove e quando

Inizio Luogo
Consultare
Roma
00145, Roma, Italia

Domande più frequenti

· Requisiti

I partecipanti devono possedere una discreta esperienza di programmazione in un linguaggio strutturato e conoscenza delle basi di programmazione orientata agli oggetti.

Programma

Presentazione del corso:
Refactoring è il processo di cambiamento su un sistema software che non altera il comportamento esterno del codice, ma ne migliora la struttura interna. È un modo disciplinato per pulire il codice minimizzando così le possibilità di introdurre bugs.

Applicando il refactoring, si ottengono una serie di trasformazioni al sistema tali che:

  • non si altera il comportamento atteso (passano tutti i test);
  • si rimuove il codice duplicato;
  • si rimuovono le complessità non necessarie;
  • si aumenta la qualità del Software;
  • si rende il codice più comprensibile;
  • si rende il codice più flessibile;
  • si rende il codice più semplice da modificare.

Il corso di Code Refactoring si compone di nove moduli.

1. Refactoring

  • Un po' di storia
  • Definizione di Refactoring
  • Obiettivi del Refactoring
  • Prerequisiti per fare Refactoring
  • Importanza e conseguenze del Refactoring
  • Quando fare Refactoring
  • Quando non fare Refactoring
  • Classificazione delle tecniche di Refactoring

2. Composizione di metodi

  • Extract Method
  • Inline Method
  • Inline Temp
  • Replace Temp with Query
  • Introduce Explaining Variable
  • Split Temporary Variable
  • Remove Assignments to Parameters
  • Replace Method with Method Object
  • Substitute Algorithm

3. Spostamenti fra oggetti

  • Move Method
  • Move Field
  • Extract Class
  • Inline Class
  • Hide Delegate
  • Remove Middle Man
  • Introduce Foreign Method
  • Introduce Local Extension

4. Organizzazione dei dati

  • Self Encapsulate Field
  • Replace Data Value with Object
  • Change Value to Reference
  • Change Reference to Value
  • Replace Array with Object
  • Change Unidirectional Association to Bidirectional
  • Change Bidirectional Association to Unidirectional
  • Replace Magic Number with Symbolic Constant
  • Encapsulate Field
  • Encapsulate Collection
  • Replace Record with Data Class
  • Replace Type Code with Class
  • Replace Type Code with Subclasses
  • Replace Subclass with Fields

5. Semplificazione di espressioni condizionali

  • Decompose Conditional
  • Consolidate Conditional Expression
  • Consolidate Duplicate Conditional Fragments
  • Remove Control Flag
  • Replace Nested Conditional with Guard Clauses
  • Replace Conditional with Polymorphism

6. Semplificazione di invocazioni di metodi

  • Rename Method
  • Add Parameter
  • Remove Parameter
  • Separate Query from Modifier
  • Parameterize Method
  • Replace Parameter with Explicit Methods
  • Preserve Whole Object
  • Replace Parameter with Method
  • Introduce Parameter Object
  • Remove Setting Method
  • Hide Method
  • Replace Constructor with Factory Method
  • Encapsulate Downcast
  • Replace Error Code with Exception
  • Replace Exception with Test

7. Gestione delle generalizzazioni

  • Pull Up Field
  • Pull Up Method
  • Pull Up Constructor Body
  • Push Down Method
  • Push Down Field
  • Extract Subclass
  • Extract Superclass
  • Extract Interface
  • Collapse Hierarchy
  • Form Template Method
  • Replace Inheritance with Delegation
  • Replace Delegation with Inheritance

8. Code smell

  • Duplicated Code
  • Long Method
  • Large Class
  • Long Parameter List
  • Divergent Change
  • Shotgun Surgery
  • Parallel Inheritance Hierarchies
  • Feature Envy
  • Data Clumps
  • Primitive Obsession
  • Switch Statements
  • Lazy Class
  • Speculative Generality
  • Temporary Field
  • Message Chains
  • Middle Man
  • Inappropriate Intimacy
  • Alternative Classes with Different Interfaces
  • Incomplete Library Class
  • Data Class
  • Refused Bequest
  • Comments

9. Supporto degli IDE al refactoring

  • Tool di refactoring di Eclipse
  • Tool di refactoring di IntelliJ IDEA
  • Plugin di refactoring

Ulteriori informazioni

Osservazioni:

Per completare il percorso formativo, si consiglia di leggere uno dei seguenti libri: * Refactoring to patterns (Kerievsky) [libro cartaceo] * Refactoring: Improving the Design of Existing Code (Fowler, Bech, Brant) [libro cartaceo]


Alunni per classe: 6

Confronta questo corso con altri simili
Leggi tutto