前面我曾经讨论过Lambda表达式(也就是匿名表达式)的用法, 这里我就主要强调一下匿名表达式的好处。

首先是不需要写多余的方法体,特别是订阅事件的时候,但是也有一个问题,那就是单个方法会因为匿名表达式的缘故代码块变得很大:

这串代码是三个月前写的,但是因为一次意外删除和保存代码的进度突然就回滚到了四个月前的地方了,所以这里看起来不明显,但是你还是能看到一些端倪的,在事件上面使用匿名表达式还好,但是如果你在方法里面用匿名表达式,最后代码会变成这样:

万不得已不要将匿名表达式写太长,这张图上的代码就是这么糟糕,不是写的不好,而是组织的不好。

这张图是写异步方法时候,但这还不是最糟糕的,我记得三个月前我的项目这里的代码是最烂的,因为我在匿名表达式里面有使用了一次匿名表达式。

这是VisualStudio的新特性,使用匿名表达式为属性赋值,这个比较简洁,所以并不坏,值得吐槽的是每个函数上面的Summary,港真,千万别写Summary,而且也别折叠方法,不然效果就是这样的

至今我还在头痛,因为代码组织的实在是不堪入目,我在这里也要提醒一下大家,在使用浅色颜色主题的时候,一定要修改VisualStudio的注释配色方案,因为折叠之后Summary注释很容易与折叠后的方法体混在一起,如果你下次继续写,我觉得这样会一点没有头绪。

上面这张图还好说,没有太烂。

到这里我再实际总结一下。匿名表达式是一个很好用的东西,简洁方便,但是还是要注意适用场合。

第一,如果你在一般公司里面做项目的时候,能不用匿名表达式就不要用,这不是炫耀自己牛逼,而是把自己往火坑里推,因为不是每个人都是大神,你要照顾每个人的编码水平,不然只有产品狗或者你的组长找你“热聊”的份,就算在大公司的地方我觉得还是少用一些比较好,因为匿名表达式唯一的坏处就是不好组织,如果你一个人扛整个项目,当我没说,你开心就好。

第二,匿名表达式挺好用的,但是注释方面要记得组织好一些,不然回头修改的时候会很头痛。

这里我要另外吐槽一下,

第一,浅色主题千万别折叠方法体,特别是折叠了Summary注释之后,如果你折叠了,很好,你可以参照一下图④,当然自身实力有限。

第二,一定要改颜色!!!!!!!!!!!!

同样折叠了方法体和Summary注释,但是辨析度比浅色主题高了不知道多少倍去了。

还有就是善用#region 标记,这个标记可以很好地组织代码,让人一眼就能看出来。

3.就是有一个良好的编码习惯,我现在一般喜欢把构造函数放一块,公开的方法放一块,变量定义放一块,然后事件放一块:

这是微软官方的注释形式,他们会在一个方法上面使用//进行注释,折叠之后你就会看到它实际上在修饰符前面隐藏,他不会影响阅读代码了

吐槽:Lambda表达式的更多相关文章

  1. java8中lambda表达式的应用,以及一些泛型相关

    语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...

  2. Java8初体验(一)lambda表达式语法

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...

  3. Java8学习笔记----Lambda表达式 (转)

    Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家       本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...

  4. C++雾中风景8:Lambda表达式

    上一篇C++的博客是Long Long ago了,前文讲到在看Lambda表达式的内容.笔者首次接触Lambda表达式应该是学习Python语言的时候,当时也不太明白这种表达方式的精髓,后续接触了Sc ...

  5. Java8 lambda表达式语法 1

    本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ...

  6. Java8初体验(1):lambda表达式语法

    原文出处: 一冰_天锦 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化 ...

  7. Lambda表达式的参数捕获

    以常用的Action委托为例: 有如下3个无参数的方法: public void Function() { //Do something } public void Function2() { //D ...

  8. 无情的Java 8 之 Stream和lambda表达式篇

    不好意思,最近刷小视频刷的有点上头 看到这图就不自觉的要来一句:"卧槽,无情" 好了,我要开始正经了 JAVA 8 已经推出有一段时间了, 相比之前, 我们操作集合的方式应该是这样 ...

  9. 夯实Java基础(二十二)——Java8新特性之Lambda表达式

    1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...

随机推荐

  1. UNion ALL 和 UNION 的区别

    UNION: 指定合并多个结果集并将其作为单个结果集返回.ALL: 将全部行并入结果中.其中包括重复行.如果未指定该参数,则删除重复行.

  2. [转]Oracle查询树形数据的叶节点和子节点

    oracle 9i判断是叶子或根节点,是比较麻烦的一件事情,SQL演示脚本如下: --表结构-- DROP TABLE idb_hierarchical; create TABLE idb_hiera ...

  3. HDOJ/HDU 1088 Write a simple HTML Browser(HTML字符串)

    Problem Description If you ever tried to read a html document on a Macintosh, you know how hard it i ...

  4. POJ 3666 Making the Grade (DP滚动数组)

    题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费.(数据有问题,代码只是单调递增的情况) #include <stdio ...

  5. 开发小技巧:C#逐个输出字符

    静态自定义方法: static int counter = 0; static string displayString = "This string will appear one let ...

  6. Creating InetAddress object in Java

    I am trying to convert an address specified by an IP number or a name, both in String (i.e. localhos ...

  7. 事物复制中大项目(Large Article)出问题如何快速修复

    事物日志中如果大的发布项目(Article)出问题了,并且影响了系统的使用,如何快速的解决? 一般的做法是重新用快照或者备份初始化,但是如果出问题的表非常大(上亿的记录,几十GB的数据),使用初始化是 ...

  8. MINA学习之IoService

    从上一篇文章中知道,IoService出于MINA体系中的底层.IoService将会帮你维护网络交互,接受消息,发送消息,管理Sessions,管理连接Connections等等. IoServic ...

  9. [Oracle] - 性能优化工具(1) - AWR

    AWR快照 默认情况下,Oracle每隔一小时会自己主动产生一个快照,保存近期8天的快照. 我们能够通过例如以下语句获得产生快照的时间间隔和保存的天数: SYS@orcl(lx15)> sele ...

  10. Vim程序编辑器

    Vim的三种模式: 1) 一般模式 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式).在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内 ...