1 つまたは 2 つのメソッドを何度も何度も呼び出さなければならないクラスがあります。メソッドは現在 を返しvoid
ます。this
メソッドをネストできるように、return にしたほうがよいのではないかと考えていました。それとも非常に非常に悪いと考えられていますか?または、悪い場合は、同じ型の新しいオブジェクトを返した方がよいでしょうか? またはどう思いますか?例として、加算器クラスの 3 つのバージョンを作成しました。
// Regular
class Adder
{
public Adder() { Number = 0; }
public int Number { get; private set; }
public void Add(int i) { Number += i; }
public void Remove(int i) { Number -= i; }
}
// Returning this
class Adder
{
public Adder() { Number = 0; }
public int Number { get; private set; }
public Adder Add(int i) { Number += i; return this; }
public Adder Remove(int i) { Number -= i; return this; }
}
// Returning new
class Adder
{
public Adder() : this(0) { }
private Adder(int i) { Number = i; }
public int Number { get; private set; }
public Adder Add(int i) { return new Adder(Number + i); }
public Adder Remove(int i) { return new Adder(Number - i); }
}
最初のものは次のように使用できます。
var a = new Adder();
a.Add(4);
a.Remove(1);
a.Add(7);
a.Remove(3);
他の 2 つは次のように使用できます。
var a = new Adder()
.Add(4)
.Remove(1)
.Add(7)
.Remove(3);
唯一の違いはa
、最初のケースはnew Adder()
while であり、後者は最後のメソッドの結果であることです。
最初に見つけたのは、すぐに... 何度も何度も書くのが面倒です。そのため、他のバージョンのいずれかを使用したいと思います。
3 番目は、多くの String メソッドや IEnumerable 拡張メソッドなど、他の多くのメソッドと同じように機能します。var a = new Adder(); var b = a.Add(5);
0 だったものと 5 だったものを持つことができるという点で、それには良い面があると思います。そして、最初の物体はいつ死にますか? 最初のメソッドが種類を返すのはいつですか? または?
とにかく、私は戻ってきたものが好きthis
で、それを使うと思いますが、他の人がこのケースについてどう思うか知りたいです. そして、ベストプラクティスと見なされるもの。