Attualmente sto studiando i metodi di refactoring definiti da Marting Fowler ( link ).
Dichiara un consiglio per la sostituzione di blocchi di codice con un singolo metodo che fa quel lavoro. Finora, sono d'accordo, come tutti abbiamo imparato a conoscere gli aspetti negativi di Spaghetti-code. Ma l' esempio per questa regola ha il seguente aspetto:
Sostituzione
void printOwing() {
printBanner();
//print details
System.out.println ("name: " + _name);
System.out.println ("amount " + getOutstanding());
}
da
void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails (double outstanding) {
System.out.println ("name: " + _name);
System.out.println ("amount " + outstanding);
}
La leggibilità e quindi la comprensione immediata del codice sono davvero migliori nel secondo esempio? Non vi è alcuna indicazione su quali "dettagli" siano in riferimento a "dover". Ad esempio, verrà elencato il nome o esiste un altro metodo printName ()? Anche l'interesse è elencato? Avrei bisogno di cercare l'implementazione del metodo printDetail () per scoprirlo.
Il metodo printOwing () stesso è già un metodo di stampa. Non sarebbe più semplice mantenere il codice per elencare semplicemente System.out.println () in questo metodo commentando lo scopo come nel primo esempio invece di "sparpagliare" il codice in questo modo?
Esiste una regola generale su quando interrompere "la metodologia" e quando ha ancora senso?