吐槽:Lambda表达式
前面我曾经讨论过Lambda表达式(也就是匿名表达式)的用法, 这里我就主要强调一下匿名表达式的好处。
首先是不需要写多余的方法体,特别是订阅事件的时候,但是也有一个问题,那就是单个方法会因为匿名表达式的缘故代码块变得很大:

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

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

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

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

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

上面这张图还好说,没有太烂。
到这里我再实际总结一下。匿名表达式是一个很好用的东西,简洁方便,但是还是要注意适用场合。
第一,如果你在一般公司里面做项目的时候,能不用匿名表达式就不要用,这不是炫耀自己牛逼,而是把自己往火坑里推,因为不是每个人都是大神,你要照顾每个人的编码水平,不然只有产品狗或者你的组长找你“热聊”的份,就算在大公司的地方我觉得还是少用一些比较好,因为匿名表达式唯一的坏处就是不好组织,如果你一个人扛整个项目,当我没说,你开心就好。
第二,匿名表达式挺好用的,但是注释方面要记得组织好一些,不然回头修改的时候会很头痛。
这里我要另外吐槽一下,
第一,浅色主题千万别折叠方法体,特别是折叠了Summary注释之后,如果你折叠了,很好,你可以参照一下图④,当然自身实力有限。
第二,一定要改颜色!!!!!!!!!!!!

同样折叠了方法体和Summary注释,但是辨析度比浅色主题高了不知道多少倍去了。
还有就是善用#region 标记,这个标记可以很好地组织代码,让人一眼就能看出来。
3.就是有一个良好的编码习惯,我现在一般喜欢把构造函数放一块,公开的方法放一块,变量定义放一块,然后事件放一块:

这是微软官方的注释形式,他们会在一个方法上面使用//进行注释,折叠之后你就会看到它实际上在修饰符前面隐藏,他不会影响阅读代码了
吐槽:Lambda表达式的更多相关文章
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- Java8初体验(一)lambda表达式语法
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- C++雾中风景8:Lambda表达式
上一篇C++的博客是Long Long ago了,前文讲到在看Lambda表达式的内容.笔者首次接触Lambda表达式应该是学习Python语言的时候,当时也不太明白这种表达方式的精髓,后续接触了Sc ...
- Java8 lambda表达式语法 1
本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化.本文是该系列的第一篇, ...
- Java8初体验(1):lambda表达式语法
原文出处: 一冰_天锦 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化 ...
- Lambda表达式的参数捕获
以常用的Action委托为例: 有如下3个无参数的方法: public void Function() { //Do something } public void Function2() { //D ...
- 无情的Java 8 之 Stream和lambda表达式篇
不好意思,最近刷小视频刷的有点上头 看到这图就不自觉的要来一句:"卧槽,无情" 好了,我要开始正经了 JAVA 8 已经推出有一段时间了, 相比之前, 我们操作集合的方式应该是这样 ...
- 夯实Java基础(二十二)——Java8新特性之Lambda表达式
1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...
随机推荐
- [辅助类]NHibernateHelper
对于学习ORM的人来说,NHibernate简直就是福音啊,而且此中技术是相当成熟,在这里分享一个小东西 public class NHibernateHelper { //数据库连接字符串 publ ...
- 18. 4Sum
#include <string>#include <stack>#include <vector>#include <map>#include < ...
- Poj 1151-Atlantis 矩形切割
题目:http://poj.org/problem?id=1151 Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)
一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 import string import cP ...
- mongoDB启动参数备忘
本文转载 Mongodb启动命令mongod参数说明 mongod的主要参数有: 基本配置 ----------------------------------------------- ...
- Hyperic Agent 安装配置报 - No token file found, waiting for Agent to initialize
本人经过跟VMWare 支持的多方努力,问题终于得到解决,方案如下: * Stop the agent Windows service. * Make sure all the agent proce ...
- C#环境下的数值计算库:MathNet
下面用一个简单的例子来说明MathNet的使用方法: 1. 进入MathNet官网找到数值计算库Math.NET Iridium(Numerics)并下载: 2. 将下载的文件解压缩,在目录下的Bin ...
- 【web开发学习笔记】ibatis学习总结
ibatis学习总结 ibatis数据库配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCT ...
- uva 167 - The Sultan's Successors(典型的八皇后问题)
这道题是典型的八皇后问题,刘汝佳书上有具体的解说. 代码的实现例如以下: #include <stdio.h> #include <string.h> #include < ...
- Load resources from classpath in Java--reference
In general classpath is the path where JVM can find .class files and resources of your application a ...