Czy złym zwyczajem jest zmuszenie setera do powrotu „tego”?

Czy dobrym lub złym pomysłem jest ustawienie setterów w java na „to”?

public Employee setName(String name){
   this.name = name;
   return this;
}

Ten wzorzec może być przydatny, ponieważ wtedy można ustawić łańcuch ustawiający w następujący sposób:

list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));

zamiast tego:

Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);

... ale w pewnym sensie jest to sprzeczne ze standardową konwencją. Przypuszczam, że może się to opłacić tylko dlatego, że może sprawić, że seter zrobi coś innego. Widziałem ten wzorzec używany w niektórych miejscach (np. JMock, JPA), ale wydaje się on nietypowy i generalnie używany tylko dla bardzo dobrze zdefiniowanych interfejsów API, gdzie ten wzór jest używany wszędzie.

Aktualizacja:

To, co opisałem, jest oczywiście ważne, ale tego, czego naprawdę szukam, jest kilka przemyśleń na temat tego, czy jest to ogólnie akceptowalne i czy są jakieś pułapki lub powiązane najlepsze praktyki. Wiem o schemacie Buildera, ale jest on nieco bardziej zaangażowany niż to, co opisuję - ponieważ Josh Bloch opisuje to, istnieje powiązana statyczna klasa Builder do tworzenia obiektów.

questionAnswers(27)

yourAnswerToTheQuestion