Jer*_*ell 26 c# lambda coding-style
我在C#中使用lambda表达式之前已经习惯使用lambda表达式,因此我养成了使用_
简单lambda 的习惯,Func<T, TResult>,
特别是对于简单的lambda,其中body只是表示返回值的表达式(谓词等) ..).但是,在C#中,我经常看到使用单个字母而不是_
用于这些相同类型的lambda表达式,例如x,y,z,i,j,k
.字母方法对我来说似乎很奇怪,因为这些字母在循环变量中已经具有常用的另一种典型含义._
在我看来,通常更容易阅读.单字母风格真的是C#中lambdas的既定风格吗?
例子:
我以前写的东西:
var ages = people.Select(_ => _.Age);
Run Code Online (Sandbox Code Playgroud)
我所看到的是写作:
var ages = people.Select(x => x.Age); // choice of 'x' is not consistent
Run Code Online (Sandbox Code Playgroud)
sbl*_*lom 49
许多C#开发人员使用_
,以表明参数是不会被使用,并且参数时,字母或其他短名称被使用.
其他资源:
Dav*_*vid 23
这是一个变量名称,所以我认为名称应该传达它需要传达的信息.什么信息确实_
传达了?
为此,哪些信息确实x
传达了?
我可能会这样写你的例子:
var ages = people.Select(p => p.Age);
Run Code Online (Sandbox Code Playgroud)
我的想法是,我觉得p
至少在整个声明的背景下暗示它是一个people
记录.你可以更进一步:
var ages = people.Select(person => person.Age);
Run Code Online (Sandbox Code Playgroud)
现在,它向读者传达了该变量实际上是什么.当然,对于这样一个小小的陈述,可以说它是过度的.我不这么认为,但这是一个偏好问题.(而不仅仅是您的偏好,而是任何必须支持此代码的人的偏好.)
对于更大,多行,复杂的lambda表达式,名称变得更加重要.距离变量意味着的上下文越远,变量的名称就越需要携带该变量的上下文.
Ser*_*rvy 17
lambda函数如何与其他任何方法如此不同.如果有人使用以下方法发布代码:
public static int getAge(Person _)
{
return _.Age;
}
Run Code Online (Sandbox Code Playgroud)
要么
public static int getAge(Person x)
{
return x.Age;
}
Run Code Online (Sandbox Code Playgroud)
你打算说什么?
在我看来,选择lambda参数的名称应该与任何其他方法的参数一样有意义.我可能会偶尔为身份函数设置异常,x => x
因为在这种情况下变量不需要任何意义,它实际上可以是任何东西,但在我的脑海中使用下划线或单个字母只会使代码更不易读.(很多人都认为LINQ/Lambdas的优点是可读性,如果你混淆所有变量就会失败.)
或者您可以使用有意义的名称,例如
var ages = people.Select(person => person.Age);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8111 次 |
最近记录: |