zoukankan      html  css  js  c++  java
  • 【原译】使用匿名函数增强程序的可读性

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

    原文链接地址: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翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!




  • 相关阅读:
    java面试的那些事
    java多线程实现复制大文件
    java心跳发送
    Java实现缓存(LRU,FIFO)
    java并发阻塞队列
    java之路
    Intellij IDEA中使用Protobuf的正确姿势
    Flink JobManager HA模式部署(基于Standalone)
    查看Flink的Job Graph时的问题
    Flink从Kafka 0.8中读取多个Topic时的问题
  • 原文地址:https://www.cnblogs.com/lazycoding/p/2315485.html
Copyright © 2011-2022 走看看