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




  • 相关阅读:
    Django Rest framework 之 版本
    Django Rest framework 之 节流
    Django Rest framework 之 权限
    Django Rest framework 之 认证
    Python 多线程、多进程 (三)之 线程进程对比、多进程
    Python 多线程、多进程 (一)之 源码执行流程、GIL
    Python 多线程、多进程 (二)之 多线程、同步、通信
    css3 盒模型记
    css3 颜色记
    css3 文本记
  • 原文地址:https://www.cnblogs.com/lazycoding/p/2315485.html
Copyright © 2011-2022 走看看