发现lambda表达式后,他们为匿名函数使用的实践,我发现自己写了很多琐碎的事件,如这些:建议使用lambda表达式事件处理程序
txtLogin.GotFocus += (o, e) =>
{
txtLogin.Text = string.Empty;
txtLogin.ForeColor = SystemColors.ControlText;
};
txtLogin.LostFocus += (o, e) =>
{
txtLogin.Text = "Login...";
txtLogin.ForeColor = SystemColors.InactiveCaptionText;
};
我已经也是从事件处理程序刚刚调用等功能搬走,小lambda表达式其做同样的替换它们:
backgroundWorker.DoWork += (o, e) => DatabaseLookup.Open(e.Argument as string);
,我发现了一些类似的问题解决performance concerns并指出你can't remove them,但我没有发现任何解决这个简单的问题是个好主意吗?
是否以这种方式使用lambda表达式被认为是很好的形式,或者做更多的经验程序员看不起?它是否隐藏难以找到的地方的事件处理程序,还是通过减少简单事件处理程序的数量来实现代码服务?
将自己限制在一个出口点是IMO可读性灾难的秘诀。如果我知道一行之后的方法的结果(例如,因为这是一种特殊情况),那么没有理由让读者通过其余的方法来到出口点。 – 2010-07-14 16:52:23
我同意,我总是倾向于提前退出。但我知道有些人反对这一点。 – 2010-07-15 07:59:08
我的理念是避免在有副作用的第一个语句和最后一个这样的语句之间退出函数,除了从'try'块中返回一个值可能比在阻止并从外部返回。 – supercat 2012-06-27 16:12:14