2009-06-09 9 views
1

ラムダ式と匿名メソッドを読みやすくするための書式設定方法を教えてください。例えば

Sorter.SortBy (array, (a, b) => 
{ 
    return a > b; 
}); 

最大readibilityのためにそれらをフォーマットするための最良の方法は何ですか?

また、1つのパラメータのラムダバージョン、および一般的に使用されるかもしれない他のケースについても考えてください。

ガイドラインは何ですか?

答えて

1

あなたの例で中かっこはなぜですか?これはもっと読めると思いませんか? :

Sorter.SortBy (array, (a,b) => (a > b)); 

EDIT(コメントへの応答で):

あなたのラムダは、一時的な変数または単一の式で表すことができない他のものを必要とする場合、あなたは中括弧を使用する必要があります明示的なreturn文を使用します。すべての(よく、ほとんどの)他のケースでは、それを省略する方が洗練されています。なぜなら、より直観的に見えるからです(とにかく)。

+0

です。私はそれが可能であるかどうかは分かりませんでした。 –

+0

また、ラムダが非常に複雑な場合、どのようにフォーマットするのですか?いくつかの行に似ていますか? –

+1

はい:それはすべて個人的な好みの問題です。あなたが開発者の意図を読むことができる限り、それは大丈夫ですIMHO –

0

通常は非常に主観的なので、どのフォーマット戦略が最適かを判断するのは難しいでしょう。

フォーマットを少しカスタマイズすることができるので、ReSharperがどのようにそれを行うのか見ることができます。

1
Sorter.SortBy(array, (a, b) => a > b); 
2
Sorter.Filter(array, a => a.IsOK); 

Sorter.SortBy(array, (a, b) => a > b); 

Collection.Apply(array, (a)  => a * a, // i like lining things up 
         (x, y, z) => WhipIt(x, y)/z, 
         (a, b) => a + b); 

Evaluator.Confuse(array, (a, func) => // this is a big one, engage curly braces 
{ 
    if(a.Flag) return 0; 
    else 
    { 
     var x = func(a); 
     if(x < 0) return -1; 
     else return x * 2; 
    } 
}); 
1

複雑なラムダ(私の意見では、ちょうど1行以上)を扱う場合、私は実際に昔ながらの2.0匿名メソッドに退行することを好む:

のdoSomething(
     デリゲート(int型B、INT)
      {
            int c = a + b;
            int型D =/*何とか何とか*/
           リターンD;
     });

ラムダに単なる行以上のものが含まれている場合、私はjust(a、b)の代わりにパラメータの種類を見たいと思います。しかし、それは私だけです。

+0

私はラムダを名前付きパラメータで読むのに苦労しました。 –

関連する問題