C产品在市场上有哪些独特优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1448个文字,预计阅读时间需要6分钟。
起因+今天在公司处理一个需求时,写的面条代码,一个方法直接从头写到尾,其中用到了GroupBy,且KeySelector是多个属性而非单个属性。但公司最近推广Clean Code,需要让代码健壮。
起因
今天在公司做一个需求的时候,写的是面条代码,一个方法直接从头写到尾,其中用到了GroupBy,且GroupBy的KeySelector是多个属性而不是单个属性。
但是公司最近推行Clean Code,要让代码有可读性。且作为一个有追求的程序员,肯定是不能写面条代码的,要对代码进行拆分。
重构前GroupBy大概是这样子的:
var groups = data.GroupBy(m => new { m.PropertyA, m.PropertyB})
个人对于短的Linq比较习惯于用方法而不是用关键字的那种写法。
一开始这样写是没问题的,但是重构的时候问题就来了:这个groups是什么类型?
重构以后这个groups是要作为参数进入到别的方法中的,方法签名显然是不能用var做类型推导,必须指定确定的类型。
我们知道GroupBy出来的东西是个泛型的东西,签名是IEnumerable<IGrouping<TKey, TSource>>,这个TSource类型是没问题,我没有对Source做修改,就是data本身的类型。
但是这个Key就有问题了。
本文共计1448个文字,预计阅读时间需要6分钟。
起因+今天在公司处理一个需求时,写的面条代码,一个方法直接从头写到尾,其中用到了GroupBy,且KeySelector是多个属性而非单个属性。但公司最近推广Clean Code,需要让代码健壮。
起因
今天在公司做一个需求的时候,写的是面条代码,一个方法直接从头写到尾,其中用到了GroupBy,且GroupBy的KeySelector是多个属性而不是单个属性。
但是公司最近推行Clean Code,要让代码有可读性。且作为一个有追求的程序员,肯定是不能写面条代码的,要对代码进行拆分。
重构前GroupBy大概是这样子的:
var groups = data.GroupBy(m => new { m.PropertyA, m.PropertyB})
个人对于短的Linq比较习惯于用方法而不是用关键字的那种写法。
一开始这样写是没问题的,但是重构的时候问题就来了:这个groups是什么类型?
重构以后这个groups是要作为参数进入到别的方法中的,方法签名显然是不能用var做类型推导,必须指定确定的类型。
我们知道GroupBy出来的东西是个泛型的东西,签名是IEnumerable<IGrouping<TKey, TSource>>,这个TSource类型是没问题,我没有对Source做修改,就是data本身的类型。
但是这个Key就有问题了。

