In una base di codice sono "a partire da" ci sono una manciata di interfacce con molti metodi predefiniti. Sembrano qualcosa del genere:
public interface HasXY {
double getX();
double getY();
default double method1(double x, double y) {...}
default double method1(HasXY other) {...}
default double method2(double x, double y) {...}
default double method2(HasXY other) {...}
default double method3(double x, double y) {...}
default double method3(HasXY other) {...}
default double method4(double value) {...}
default double method5(double value) {...}
}
In questo momento ho la possibilità di refactoring questo codice in un'interfaccia e una classe. Il risultato di questo refactor sarà simile a questo:
public interface HasXY {
XYPosition getXY();
}
public class XYPosition {
double method1(double x, double y) {...}
double method1(XYPosition other) {...}
double method2(double x, double y) {...}
double method2(XYPosition other) {...}
double method3(XYPosition other) {...}
double method4(double value) {...}
double method5(double value) {...}
}
Devo notare che il code-base "source" ha diverse interfacce di questo tipo e molte classi implementano una manciata di queste interfacce (portando ad oggetti che hanno molti metodi). Sono anche in un momento unico nel tempo in cui fare questo refactoring sarà più semplice che mai.
Che cosa pensi di un simile refactoring? È una schiacciata "dovrebbe fare"? Pensi che sia una perdita di tempo? È effettivamente dannoso perché perde la sintassi di chiamare "myObject.methodFromOneOfSeveralDifferentInterfaces ()"