在 Jeffrey Richter 的“CLR via C#”(.net 2.0 版页面,353)中,他说作为一种自律,他从不让匿名函数的长度超过 3 行代码。他主要引用可读性/可理解性作为他的理由。这很适合我,因为我已经有了使用不超过 5 行匿名方法的自律性。
但是,“编码标准”建议如何与 lambda 相叠加?从表面上看,我会以同样的方式对待它们 - 保持 lambda 一样短。但其他人对此有何看法?特别是,当 lambda 被用于(可以说)它们最亮的地方时 - 在 LINQ 语句中使用时 - 是否有真正的理由放弃该自律/编码标准?
最佳答案
请记住,自 2.0 以来,情况发生了很大变化。例如,考虑 .NET 4 的并行扩展,它大量使用委托(delegate)。你可能有:
Parallel.For(0, 100, i =>
{
// Potentially significant amounts of code
});
对我来说,这是一个 lambda 表达式还是一个匿名方法并不重要——它的使用方式与 .NET 2.0 中通常使用的委托(delegate)不同。
在普通的 LINQ 中,我通常不会发现自己使用大型 lambda 表达式——当然不是就语句数量而言。有时,一个特定的单个表达式的行数会很长,因为它转换了许多属性;另一种选择是拥有巨大的线条!
事实上,LINQ 倾向于支持单表达式 lambda 表达式(甚至没有大括号)。看到 LINQ 有一个包含 5 个语句的 lambda 表达式的良好使用,我会感到相当惊讶。
关于linq - 匿名方法/Lambda 的(编码标准),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627662/