É uma boa ou má idéia fazer com que os setters em java retornem "isso"?
public Employee setName(String name){
this.name = name;
return this;
}
Esse padrão pode ser útil porque você pode encadear setters como este:
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
em vez disso:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
... mas isso vai contra a convenção padrão. Suponho que possa valer a pena apenas porque pode fazer com que o levantador faça outra coisa útil. Eu já vi esse padrão usado em alguns lugares (por exemplo, JMock, JPA), mas parece incomum e geralmente usado apenas para APIs muito bem definidas, onde esse padrão é usado em qualquer lugar.
Atualizar:
O que eu descrevi é obviamente válido, mas o que realmente estou procurando é pensar se isso geralmente é aceitável e se existem armadilhas ou práticas recomendadas relacionadas. Eu sei sobre o padrão Builder, mas ele é um pouco mais envolvido do que o que estou descrevendo - como Josh Bloch descreve, há uma classe estática associada do Builder para criação de objetos.
this
. Às vezes, até altero a função para que, em vez de retornar um valor, ela opere em um membro do objeto, apenas para que eu possa fazer isso. É maravilhoso. :)