È una buona o cattiva idea fare in modo che i setter di java ritornino "questo"?
public Employee setName(String name){
this.name = name;
return this;
}
Questo modello può essere utile perché in questo modo è possibile concatenare setter come questo:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
Invece di questo:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... ma in qualche modo va contro la convenzione standard. Suppongo che potrebbe valere la pena solo perché può rendere quel setter fare qualcos'altro utile. Ho visto che questo modello utilizzava alcuni punti (ad esempio JMock, JPA), ma sembra insolito e generalmente utilizzato solo per API molto ben definite in cui questo modello viene utilizzato ovunque.
Aggiornare:
Ciò che ho descritto è ovviamente valido, ma quello che sto davvero cercando sono alcuni pensieri sul fatto che questo sia generalmente accettabile e se ci sono insidie o buone pratiche correlate. Conosco il modello Builder, ma è un po 'più coinvolto di quello che sto descrivendo - poiché Josh Bloch lo descrive, esiste una classe Builder statica associata per la creazione di oggetti.
this
. A volte, modifico anche la funzione in modo che invece di restituire un valore, funzioni su un membro dell'oggetto, solo così posso farlo. È meraviglioso. :)