对语法糖的看法

Kotlin 是一门实践导向的语言,什么意思呢,就是他就是想让程序员用的更爽。所以他用了很多语法糖,来去除一个模板代码,模板代码应该就算是一门语言的习语吧。不如在 Java 里要写个单例,那都需要一下几步:

  1. 将构造函数私有化,不让使用者自己随便创建对象
  2. 在该类内定义一个私有的静态属性,类型为该类
  3. 提供一个公有的静态 getInstance() 方法, 在第一次使用的时候初始化之前那个私有静态属性,并返回,之后就可以不在初始化了,直接使用那个对象就行。

以上的过程,在代码中是经常出现的,还有几种初始化的方法,我们总选一种比较好的。而在 Kotlin 内,只需要使用 object 关键字修饰 class。

还是来个栗子吧

Java 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Singleton {
private volatile static Singleton singleton; // 2
private Singleton (){} // 1
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}

Kotlin 代码:

1
2
object Singleton {
}

这个对比,可为震撼?

有些拿语法糖说事,最早我知道语法糖好像是一篇写 Python 的文章,说 Python 有很多语法糖,我很难认同,感觉这就是酸葡萄心理,这个写文章的不是 C 语言开发者,就是 Java 语言开发者。

大部分对语法糖的指责是它没有给语言添加什么功能,只是对原有语言的封装,可是这有什么呢,原来的语言已经完备了,何必添加功能。语言是人类与机器之间的交流的工具,我们要发着这个工具,添加一些常用语,这是多么好呀,比如我们的缩略语 WTF,lol等等。

当然,一些编程初学者并不建议学习 Kotlin, 可以先学习 Java 在学习 Kotlin。

下一篇,我会翻译一下 Kotlin 官网对 Kotlin 习语的整理。