最近公司有个展示 类项目,没有特别多的条条框框的要求,用kotlin 写了一篇,顺便把之前使用的封装的一些基类用kotlin 重新实现了一篇,总的来说感觉还是不错的,在此留个信息,也给网上kotlin 和java 之争 添点堵
优点:
1. 代码行数少,代码行数如果刻意计算,可以省30% 左右是很有可能的,
主要体现在 ,方法可以等于 值, lambda, data类,和委托类,主构造函数
特别是 像C++一样,一个文件可以有N个类,对于MVVM+Databinding来说,简直是清爽得厉害,
2. 写起来比较放心.
1) 无NPE,这个是在kotlin 本脚本化 演进的关键支撑点,由于静态语言不能像动态语言那样好的容错性,且代码没有动态特性,基本上也没有拼命往这个方向干的语言,但是kotlin依赖强大的编译工具,将语言打造成动态语言的特性这条路上已经跨出去了,配合非空的保障,基本上可以让语言能够拥有灵活的前提下尽量不闪退
2).引用了java的类,或是框架回调出来的类,在语法上会提示你加上?或!!,
在某些时候会帮你推导出有问题的地方,在编辑器上提示你加上一些判断,
3). 在变量声明时必须给值,这个用起来确实是比用java放心,基本上没有空指针的心理负担
4). 委托的引入,使得变量在初始化时,能做的事情更多了,不仅仅是赋值,还可以懒加载,
非空机制在此时更能让懒加载这些特性得以放心使用
3.语法范式层面
1)语法闭包作用域 体验感很强烈,使用inline开发大量的 闭包块,有很强的感觉 想用一行代码把事情做完,当然对于对编程要求比较有流畅感的人来说,确实是一个难得的体验,方法级别的闭包,也比java类级别的闭包要灵活很多,特别是使用with做为 模板代码的 集束带时,有种网线被扎起来的感觉,可以感觉到C++中使用作用域时的感觉,还不错
2) 更彻底的面向对象,在java中还是有些基本类型存在,在kotlin里面基本上就全部对象化了,全部对象化代表着更丰富的语义,配合lambda可以实现更灵活的效果
3) DSL的引入,DSL对于实际项目来讲,不算是直接生产力,DSL即领域特定语言,对于产品周边的工具链开发,是很有帮助作用的,当然 如果 想创建一种规范,在产品中引入 产品,并大力推广也不是不行,至少kotlin已经具备了此种能力,如果有好的想法,随着kotlin的知名度上升,说不定会是不错的项目,前提是kotlin能发展到够大
缺点:
1.语法太过注重一行 体验,几乎带有一种偏执,有各种API让你一行代码把逻辑写完,这种写法,我个人比较喜欢,但是也比较担心,毕竟对于语言来说,语言要做的是普适性,kotlin有点偏执的做法,难免不被大多数人接受
2.编译时间比java久,这个原因是可以很容易明白的,语法糖就像是一个产品,把代码包装的产品,把kotlin转成jvm执行的代码,也是要老老实实交出来的
总结:
个人的一个基本观点,不论哪门语言 拥有编译型语言的性能,和脚本语言的灵活特性,能结合得恰到好处,相信就是一门不错的语言,基本上kotlin做到了这一点, 而且基于无NPE的特性,也勉强有了与rust这种以安全为主打的新语言有一起讨论的资格,极客的打字感,满满的调用自己封装的API的感觉, 目前只剩下,是否与潮流迎合
网友评论