2009-07-12 9 views

答えて

11

複数の場所で同じロジックを使用する必要がある場合は、別の方法を使用することが理にかなっています。

ロジックを一度使用する必要があるのは、です。これはかなり短いですが、無名関数を使用することは理にかなっています。デリゲートがそれを作成しているメソッドのローカル変数にアクセスする必要がある場合、無名関数は非常に便利なクロージャとして機能します。

さらに、無名関数は、Parallel Extensionsとの並列化のようなものに使用されている場合には、かなり長くても便利です。大部分

また、デベロッパーのコードが複雑なため、独自の単体テストが必要な場合は、メソッドとして公開することは意味があります。 (残念なことに、InternalsVisibleToを使用する内部メソッドか、パブリックメソッドである必要がありますが、通常はプライベートであることがよくありますが、それは人生です)。

+0

論理の分離は私が考慮しなかったものであり、パラメータを渡すことなくローカル変数へのアクセスの容易さは興味深いものです。 Parallel ExtensionsはC#4.0の機能ですか? –

+0

私は2つが相互に排他的ではないことを付け加えたいと思います。再利用性とクロージャの利点を同時に得るために、ほとんどの場合通常の関数を呼び出す無名関数を持つことはしばしば便利です。 –

+0

はい、Parallel Extensionsには4.0が付属しています。 –

5

実行する必要がある関数をそのデリゲートだけで実行する必要がある場合(つまり、他の場所でその関数を必要としない場合)、関数/メソッドが(5ライン以下)は比較的短い。

ただし、何を使用するかは厳密なルールが定義されていません。
IMHO、私は匿名の方法はほとんどの状況で可読性に寄与しないことがわかっているので、ほとんど使用しません。

+0

ああ、それは意味があります。読みやすさに関する意見をいただき、ありがとうございます。私は匿名の構文を少し複雑にしていたので、それが私のものかどうか疑問に思いました。 –

関連する問題