【原译】使用匿名函数增强程序的可读性

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

原文链接地址:http://blog.csharptutor.com/2011/10/05/making-code-more-readable-with-anonymous-functions/

如果你使用过javascript,你可能通常使用已经定义好的click事件,来激活你定义的事件,比如下面这段代码

$("#submit").click(function(){
performPostAndRedirect();
});

这段代码安全并且无错误,对我来说理解也很容易。可读性也很好。我认为可读性很重要

那么如何应用在C#开发中呢

看看下面这段来自一个WPF程序的代码

var button = new Button();

button.Click += new RoutedEventHandler(button_Click);

这段代码是可以简化一些的。事实上,现在你根本不用写 “new RoutedEventHandler”这部分。

button.Click += button_Click

现在,这似乎暗示我们有一个名为button_Click的方法。大概是这个样子

void button_Click(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}


在我遇到的很多情况下,你也许并不像在 event-handler中处理任何实际的代码,

那么我们怎么样能使程序更简单并且在Click的事件指派中找到一点感觉。

使用匿名函数

首先,你通常可以写出这样的代码。(把button_Click匿名了)

button.Click += (object sender, RoutedEventArgs e) => { ValidateInput(); };

而这又是可以被简化的

button.Click += (sender, e) => { ValidateInput(); };

即使你想在Click事件中调用不止一个的方法(使用匿名函数),都会很简单,因为你可以从上面那行代码中看出来到底发生了什么(校验输入),你也就不必跳转到Click函数去看看里面到底干了什么。

当然这肯定不是使用匿名函数的唯一的地方。我自己最常用的是当我想要创建一个新的任务的时候。像这样。注:这个匿名函数没有参数。

Task.Factory.StartNew(() =>
{
PerformTimeConsumingOperation();
ValidateOperation();
});

其余的就不赘述了,在你实际做的时候,匿名函数将会使你的程序可读性更强,至少在我看来是这样的。


著作权声明:本文由http://www.cnblogs.com/lazycoding翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!




原文地址:https://www.cnblogs.com/lazycoding/p/2315485.html