スタイルについて質問があります。それは私がずっと前から行ってきたことですが、その理由が正確にはわかりません。
私が使用したほとんどの言語では、別のメソッドへの引数として値を返すメソッドを呼び出すことができます。
foo(bar())
に等しい
var bar=bar()
foo(bar)
どういうわけか、後者は不快に思えます。何故ですか?最初のほうが読みやすく、効率的で、クリーンですか?
スタイルについて質問があります。それは私がずっと前から行ってきたことですが、その理由が正確にはわかりません。
私が使用したほとんどの言語では、別のメソッドへの引数として値を返すメソッドを呼び出すことができます。
foo(bar())
に等しい
var bar=bar()
foo(bar)
どういうわけか、後者は不快に思えます。何故ですか?最初のほうが読みやすく、効率的で、クリーンですか?
必ずしも等しいわけではありません。
foo(bar());
「bar を呼び出し、その引数を foo にパイプする」ことを意味します
var retBar = bar();
foo(retBar);
「retBar を初期化してから bar を呼び出し、返されたものを retBar に保存してから、retBar を引数として foo を呼び出す」ことを意味します。
宣言する変数のコストによっては、後者の方がメモリ フットプリントが大きくなったり、ランタイムが遅くなったりする可能性があります。
しかし実際には、これは余分なステートメント全体 (言語によっては、実際には 2 つの余分なステートメント) であり、コードがクリーンではなくなります。方法 #2 を実行するbar()
のは、デバッガーでそれをのぞき見るためだけであっても、 の値を使用する何らかの理由がある場合だけです。