理由三:我喜欢大括号
还有一点使我不想喜欢这种语言的原因是,我不明白这些与语言要把大括号去掉。去掉大括号还能叫编程语言么?看下我的意思。这是带大括号的代码:
|
这个则是去掉大括号的相同的代码:
|
看看差别吧,你怎么想我不知道,但是我真心觉得第二种语言有点像垃圾,就像漏掉了什么东西似得。
实话说,如果没有大括号给我指引,我总觉得少了些东西。
理由四:我喜欢看到明确的类型
函数式语言的支持者声称,类型推断使代码更清洁,因为任何时候你都无须用类型声明干扰您的代码。
好吧,碰巧,我喜欢看类型声明。如果我不知道每个参数的精确类型,我会觉得不舒服。这就是为什么Java 是我最喜欢的语言。
这是一个某些ML-ish代码的函数签名。不需要类型声明,所有类型自动推断。
|
这是C#的类似功能代码的函数签名,带有明确的类型声明。
|
在这方面我或许是属于少数派,但我更喜欢第二个版本的说法。知道返回值的类型是IEnumerable<IGrouping<TKey, TSource>>对我而言极为重要。
确实,编译器会为你检查它的类型,并在类型不匹配的时候提醒你。但为什么要让编译器代替你做你能做的工作呢?
好吧,我承认如果你使用了泛型,匿名,返回值为函数的函数,以及其它一切新奇的东西,那么你的类型声明将变得复杂又难以理解。而这使得正确判断类型变得非常困难。
但对此我有个简单的弥补办法——不使用泛型而且不要传递函数,你的签名将变得简单许多。