C# 如何格式化lambda表达式和匿名方法以获得最大的可读性?

C# 如何格式化lambda表达式和匿名方法以获得最大的可读性?,c#,.net,lambda,C#,.net,Lambda,例如: Sorter.SortBy ( array, ( a, b ) => { return a > b; } ); 为了最大程度地提高可读性,最好的格式化方法是什么 对于一个参数lambda版本和其他可能常用的情况也可以考虑 指导原则是什么?为什么要在示例中使用花括号?你不觉得这更容易理解吗 Sorter.SortBy ( array, (a,b) => (a > b) ); 编辑(回应评论): 如果lambda需要临时变量或其他无法在单个表达式中表达的内

例如:

Sorter.SortBy ( array, ( a, b ) =>
{
    return a > b;
} );
为了最大程度地提高可读性,最好的格式化方法是什么

对于一个参数lambda版本和其他可能常用的情况也可以考虑


指导原则是什么?

为什么要在示例中使用花括号?你不觉得这更容易理解吗

Sorter.SortBy ( array, (a,b) => (a > b) );
编辑(回应评论):


如果lambda需要临时变量或其他无法在单个表达式中表达的内容,则应使用花括号和显式返回语句。在所有(好的,大多数)其他情况下,省略它们更干净,因为它看起来更直观(无论如何对我来说)。

为什么在您的示例中使用花括号?你不觉得这更容易理解吗

Sorter.SortBy ( array, (a,b) => (a > b) );
编辑(回应评论):


如果lambda需要临时变量或其他无法在单个表达式中表达的内容,则应使用花括号和显式返回语句。在所有(好的,大多数)其他情况下,省略它们更干净,因为它看起来更直观(无论如何对我来说)。

您将很难决定什么格式策略是最好的,因为这通常是非常主观的


您可以看看ReSharper是如何做到这一点的,因为它允许您对格式进行一些自定义。

您将很难决定什么格式策略是最好的,因为这通常是非常主观的

Sorter.SortBy(array, (a, b) => a > b);
您可以看看ReSharper是如何实现的,因为它允许您稍微自定义格式设置。

Sorter.Filter(array,a=>a.IsOK);
Sorter.SortBy(array, (a, b) => a > b);
排序器排序(数组,(a,b)=>a>b); Collection.Apply(数组,(a)=>a*a,//我喜欢把东西排成一行 (x,y,z)=>WhipIt(x,y)/z, (a,b)=>a+b); expluator.Mizzle(数组,(a,func)=>//这是一个大的数组,使用大括号 { 如果(a.Flag)返回0; 其他的 { var x=func(a); 如果(x<0)返回-1; 否则返回x*2; } });
分拣机过滤器(数组,a=>a.IsOK);
排序器排序(数组,(a,b)=>a>b);
Collection.Apply(数组,(a)=>a*a,//我喜欢把东西排成一行
(x,y,z)=>WhipIt(x,y)/z,
(a,b)=>a+b);
expluator.Mizzle(数组,(a,func)=>//这是一个大的数组,使用大括号
{
如果(a.Flag)返回0;
其他的
{
var x=func(a);
如果(x<0)返回-1;
否则返回x*2;
}
});

在处理复杂的lambda时(我认为不止一行),我实际上更喜欢回归到老式的2.0匿名方法:

剂量测定法(
代表(内部a、内部b)
{
int c=a+b;
int d=/*废话废话*/
返回d;
});


当lambda包含不止一行时,我希望看到参数的类型,而不仅仅是(a,b)。但那只是我。

在处理复杂的lambda时(我认为不止一行),我实际上更喜欢回归到老式的2.0匿名方法:

剂量测定法(
代表(内部a、内部b)
{
int c=a+b;
int d=/*废话废话*/
返回d;
});


当lambda包含不止一行时,我希望看到参数的类型,而不仅仅是(a,b)。但那只是我。

是的。我只是不知道这是可能的。另外,如果lambda非常复杂,你会如何格式化它?喜欢分成几行吗?是的:)这都是个人喜好的问题。只要你能读懂开发者的意图,就没关系。我只是不知道这是可能的。另外,如果lambda非常复杂,你会如何格式化它?喜欢分成几行吗?是的:)这都是个人喜好的问题。只要你能读懂开发人员的意图,IMHOI就很难读懂带有命名参数的lambda。。不要了!我很难用命名参数阅读我的lambda。。不要了!