Considera quel codice:
FancyClass c = new FancyClass();
s.setParameter(value);
s.setParameter2(value2);
//a lot of parameters
È davvero ingenuo, quindi possiamo usare un modello di builder:
FancyClass c = new FancyClassBuilder().setParameter(value).setParameter2(value2).build()
Va bene, ma cosa succede se dobbiamo usare un sacco di setter durante un programma?
s.setParameter(value)
s.setParameter1(value)
s.setParameter2(value)
s.setParameter3(value)
//more and more...
Sarà più efficiente e meno caldaia:
s.setParameter(value).setParameter1(value).setParameter2(value)
.setParameter3(value)
Sembra più a posto e consente al programmatore di non eseguire questa azione: (lo odio):
s.setParamter()
// a lot of doing smth
s.setParameter2()
anche se non è necessario mettere via questi setter (perché si tratta di un problema ereditario, qualcuno semplicemente tocca l'invio due volte e qualcuno digita un altro codice ...
Che cosa succede se ...
@SetterChain
class MyFancyClass {
public void setParameter(Parameter p) {}
public Parameter getParameter(Parameter p) {}
public void setParameter2(Parameter p) {}
public Parameter getParameter2(Parameter p) {}
}
//somewhere else...
MyFancyClass s = new MyFancyClass()
//a long time ago
s.set().parameter(value).parameter2(value); //and more and more...
Cose interessanti o no? Questa soluzione aumenterebbe significativamente la qualità di un codice o meno e si tratta di un relitto e perché?