Czy to dobry, czy zły pomysł, aby setery w javie zwracały „to”?
public Employee setName(String name){
this.name = name;
return this;
}
Ten wzorzec może być przydatny, ponieważ wtedy możesz ustawić łańcuchy ustawiające 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 to w pewien sposób jest sprzeczne ze standardową konwencją Podejrzewam, że to może być opłacalne tylko dlatego, że może sprawić, że Seter zrobi coś innego pożytecznego. Widziałem, że ten wzorzec wykorzystywał niektóre miejsca (np. JMock, JPA), ale wydaje się rzadki i ogólnie używany tylko w przypadku bardzo dobrze zdefiniowanych interfejsów API, w których ten wzorzec jest używany wszędzie.
Aktualizacja:
To, co opisałem, jest oczywiście ważne, ale tak naprawdę szukam kilku przemyśleń na temat tego, czy jest to ogólnie akceptowalne i czy są jakieś pułapki lub powiązane najlepsze praktyki. Wiem o wzorcu Konstruktora, ale jest on nieco bardziej zaangażowany niż to, co opisuję - jak opisuje to Josh Bloch, istnieje powiązana statyczna klasa Konstruktora do tworzenia obiektów.
this
. Czasami nawet zmieniam funkcję, aby zamiast zwracać wartość, działa ona na elemencie obiektu, tylko po to, aby to zrobić. To jest wspaniałe. :)