オブジェクトを変更するメソッドにオブジェクトを渡すことは、一般的な(アンチ)パターンですか?
Martin FowlerのRefactoring bookで一般的なコードのにおいについて読んでいます。その文脈で、私はコードベースで見ているパターンについて疑問に思っていました、そしてそれが客観的にそれをアンチパターンと考えることができるかどうか。 パターンは、オブジェクトが1つ以上のメソッドへの引数として渡されるものであり、それらはすべてオブジェクトの状態を変更しますが、いずれもオブジェクトを返しません。そのため、(この場合は)C#/。NETの参照によるパスに依存しています。 var something = new Thing(); // ... Foo(something); int result = Bar(something, 42); Baz(something); (特にメソッドに適切な名前が付けられていない場合)そのようなメソッドを調べて、オブジェクトの状態が変化したかどうかを理解する必要があることがわかりました。複数レベルの呼び出しスタックを追跡する必要があるため、コードの理解がより複雑になります。 このようなコードを改善して、新しい状態の別の(クローンされた)オブジェクト、または呼び出しサイトでオブジェクトを変更するために必要なものを返すことを提案したいと思います。 var something1 = new Thing(); // ... // Let's return a new instance of Thing var something2 = Foo(something1); // Let's use out param to 'return' other info about the …