Sto leggendo il libro "Refactoring" e sono alla tecnica "Metodo di estrazione":
Codice originale:
void printOwing() {
printBanner();
//print details
System.out.println ("name: " + _name);
System.out.println ("amount " + getOutstanding());
}
Codice refactored con tecnica "metodo Extract":
void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails (double outstanding) {
System.out.println ("name: " + _name);
System.out.println ("amount " + outstanding);
}
Cosa succede se invece scriverei una funzione immediatamente invocata, che avrebbe il vantaggio di isolare chiaramente e denominare il nome della parte di codice che avrei estratto? All'interno dell'IDE, potrei comprimere questo metodo e avere il vantaggio di vedere chiaramente il flusso senza il metodo estratto in qualche altro posto:
void printOwing() {
printBanner();
void printDetails (double outstanding) { // collapsed in the ide
System.out.println ("name: " + _name);
System.out.println ("amount " + getOutstanding());
}() // self invokation
}
Non è meglio del "Metodo di estrazione"? Dalla tua esperienza?