2012-02-07 20 views
0

は基本的に、私はこの方法持って言う:ネスティング方法をお勧めしますか?

string MyMethod(string someVar); 

をそして、私は別の方法では、戻り値を使用する必要があり、それは何をすることをお勧めし:

string myString = AnotherMethod(MyMethod(someString)); 

いうより:

string anotherString = MyMethod(someString); 
string returnValue = AnotherMethod(anotherString); 
+0

2番目のオプションをお勧めします – Shai

+1

これはデザインパターンとは関係がありません。これはコーディングスタイルに関するものです。 – Oded

+0

内部的には、どちらの方法でもAFAIKはメソッドの戻り値を保持する内部メモリを作成するため、パフォーマンス上の利点はありません。しかし、私はここで読みやすさの目的を検討します。ネストされたメソッドはあまりにも多くのパラメータを取ることはないので、最初のスタイルは行の長さや読み込みの複雑さを増やさないためです。 – Zenwalker

答えて

0

テストとデバッグの目的(ブレークポイントの設定/各呼び出しの結果の検査)では、私が好むより長いバージョンがあります。

速度/効率に関して、測定可能な差異はありません。

2

個人的には、より長いバージョンを使用します。読みやすくなり、デバッグが容易になります。

別のメソッドのパラメータリストでメソッドを呼び出すと、読者が混乱する可能性があります。

割り当てが必要な追加の変数が1つあるため、より長いバージョンではメモリの使用にマイナーな影響がありますが、これは最小限に抑えられます。

+1

メモリ割り当てに関しては、それを渡す前にネストされた関数の値を取得するためにそのメモリを割り当てる必要はありませんか?明示的ではないかもしれないが、確かにそれはまだどこかに存在しなければならない...(私は、これらの事柄でまだ比較的新しいことを付け加えなければならない)。 – Chris

+0

@Chris - 私は変数の追加割り当てについて話しています。 – Oded

+0

ええ、私は今あなたが何を意味するかを見ていると思います。私はlinqpadが2つの方法のために生成していることを見つめているし、何が起こっているのかを完全に理解するためにILを学ぶ必要があることを認識しています。 ;-)しかし、最初の例では当然ですが、実際には理論的には同じですが、ローカル変数は後で再び使用できますが、ネストされた変数ではそうではありません。 – Chris

0

2番目のオプションも好きです。 これは理解して使用することがあまり複雑でないためです。

+0

もう少し説明できますか? –

0

長い方が読みやすく、簡単にデバッグできます。 また、あなたにもvarieable「anotherString」に時計を追加することができます

string anotherString = MyMethod(someString); 

の行にブレークポイントを設定するのはとても簡単です。

関連する問題