¿Es una buena o mala idea hacer que los setters en Java devuelvan "esto"?
public Employee setName(String name){
this.name = name;
return this;
}
Este patrón puede ser útil porque puedes encadenar a los setters de esta manera:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
en lugar de esto:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... pero va en contra de la convención estándar. Supongo que podría valer la pena solo porque puede hacer que ese setter haga algo más útil. He visto que este patrón usa algunos lugares (por ejemplo, JMock, JPA), pero parece poco común, y solo se usa generalmente para API muy bien definidas donde este patrón se usa en todas partes.
Actualizar:
Lo que he descrito es obviamente válido, pero lo que realmente estoy buscando es algunas reflexiones sobre si esto es generalmente aceptable y si existen dificultades o prácticas recomendadas relacionadas. Sé sobre el patrón Builder, pero está un poco más involucrado que lo que estoy describiendo, como lo describe Josh Bloch, hay una clase Builder estática asociada para la creación de objetos.
this
. A veces, incluso modifico la función para que, en lugar de devolver un valor, funcione en un miembro del objeto, solo para poder hacer esto. Es maravilloso. :)