Javaのセッターに「これ」を返すようにするのは良いことですか、悪いことですか?
public Employee setName(String name){
this.name = name;
return this;
}
このパターンは、次のようにセッターをチェーンできるので便利です。
list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!"));
これの代わりに:
Employee e = new Employee();
e.setName("Jack Sparrow");
...and so on...
list.add(e);
...しかし、それは一種の標準的な慣習に反します。セッターが何か便利なことをできるからといって価値があるのではないでしょうか。このパターンがいくつかの場所(JMock、JPAなど)で使用されているのを見てきましたが、一般的ではないようで、このパターンがどこでも使用されている非常に明確に定義されたAPIでのみ使用されます。
更新:
私が説明したことは明らかに有効ですが、私が本当に探しているのは、これが一般的に受け入れられるかどうか、および落とし穴や関連するベストプラクティスがあるかどうかについての考えです。Builderパターンについては知っていますが、私が説明しているものより少し複雑です。JoshBlochが説明しているように、オブジェクトを作成するための静的なBuilderクラスが関連付けられています。
this
。時には、関数を変更して、値を返すのではなく、オブジェクトのメンバーを操作して、これを実行できるようにすることもあります。素晴らしいです。:)