Scelta la duplicazione da rimuovere e i refactoring da usare capita anche che ci sono più alternative per rimuoverla e quindi bisogna scegliere il modo di rimuovere la duplicazione .
Per fare un esempio, il metodo void C { a(); a(); X(); a(); X(); X(); } può essere trasformato in
void C { aa(); X(); a(); XX(); }
oppure in
void C { a(); aX(); aX(); X(); }
In questo caso nel cercare un nome per il metodo ottenuto in un modo (nel esempio un nome per aa() e XX()) e quello ottenuto nell'altro (nel esempio u nnome per aX()) scegliere quello col nome che ha più senso aiuta a fare la scelta giusta.
Un altro criterio è quello di pensare ad alcuni scenari possibili di evoluzione del programma e valutare con quale codice le cose andrebbero meglio. Cioè con quale codice per aggiungere una nuova funzionalità è necessario cambiare meno cose, significa scegliere quella strada che meglio rispetta il principio Open/Closed o PrincipioOCP .
Riferimenti: Working Effectively with legacy code di M.C.Feathers
Tags : Team Work | Agile | Pratiche | Progettazione Software |