E' arrivato il momento di raccogliere il fattore comune del codice duplicato e unificarlo in un solo punto eliminando cosi le duplicazioni. Annoto alcune indicazioni da Working Effectively with legacy code di M.C.Feathers .
![](http://static.wallpaper.com/croppedimages/testuser5_jul2008_05_Tailspin_jb170708_jZwRUi_5UCCCa.jpg)
Quando la duplicazione riguarda una porzione di codice o una parte di una espressione dentro un metodo si applica il RefactoringExtractMethod.
Quando la parte duplicata è una espressione, ad esempio una espressione condizionale applica il RefactoringDecomposeConditional .
Quando la parte duplicata è un metodo intero e relative variabili di classe si applica il RefactoringExtractSuperclass.
Quando la duplicazione riguarda buona parte di un metodo a meno di piccole differenze, si applica il RefactoringFormTemplateMethod.
Quando il codice duplicato è un if o uno switch ripetuto uguale in diverse parti considera RefactoringReplaceConditionalWithPolymorphism e IfNonEObjectOriented .
Tags : Team Work | Agile | Pratiche | Progettazione Software |