Kotlin 普及度增加,代码质量比 Java 更高?

达尔文
 达尔文
发布于 2018年08月20日
收藏 8

Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持。如今,在所有开源的 Android 应用程序中,我们能发现有 12% 都是由 Kotlin 开发。Google 在 2017 年底表示 Kotlin 已经渗透了超过 17% 的使用 IDE,Android Studio 3.0 开发的 Android 应用程序。

Kotlin 是一个运行在 Java 虚拟机上的静态类型编程语言,于 2012 年开源,采用 Apache 2.0 许可证。它与 Java 的语法不兼容,但设计成可以与 Java 代码互操作,可复用现有的 Java 类库,并且被认为所需代码量更少,而代码更少通常也意味着 bug 更少。Google 当时发布的 Android Studio 3.0 就添加了 Kotlin 支持,详情你可以看这里:

一年后,法国 Valenciennes 大学的计算机科学家 Bruno Gois Mateus 和 Matias Martinez 发表了一篇论文《An Empirical Study on Quality of Android Applications written in Kotlin language》,对用 Kotlin 编写的 Android 应用程序的质量进行了研究。

论文原文:

他们在论文中描述了如何从开源应用商店 F-Droid 收集 925 个应用程序,以及如何测量 Kotlin 代码在每个应用中的表现,并将分析代码“异味”(Smells)作为衡量代码质量的指标。

:“异味”(Smells)是“反模式”(anti-patterns)的另一种说法,“反模式”是一种用于指代不良编码模式的术语。 在 Java 中,The Blob(a.k.a God Objects)代表了一种常被引用的反模式。

通过对这 925 个应用进行分析,发现 109 个应用至少有一个版本是使用 Kotlin 语言写的,其中又有 35% 的应用只使用 Kotlin 语言。在包括 Java 代码和 Kotlin 代码的应用中,较近的版本中 Kotlin 代码比例提高而 Java 代码下降。

然后分析代码质量:

面向对象(OO)的反模式包括:Blob Class(BLOB),Swiss Army Knife(SAK),Long Method(LM)和 Complex Class(CC)。 

Android 反模式包括:重型广播接收器(Heavy Broadcast Receiver,HBR),重型异步传输(Heavy AsyncTask,HAS),重型服务启动(Heavy Service Start,HSS),初始 OnDraw(Init OnDraw,IOD),无内存解析器(No Low Memory Resolver,NLMR)和 UI 重写(UI Overdraw,UIO)。

在面向对象的反模式中,LM,CC 和 BLOB 出现在至少 92% 的 Kotlin 和 Java 应用中,其中 OO “异味”在 Kotlin 应用更为常见。但研究者发现,在这 Android“异味”中,Java 比 Kotlin 更容易受到三种“异味”的影响。

研究者还在论文中提到,Kotlin 的采用使得至少 50% 的 Android 应用程序的质量提高了。因此认为,Kotlin 的代码质量更高

另外,这两位研究员也比较了 Objective-C 应用程序和 Swift 应用程序,结果发现 Android 应用程序的异常值高于 iOS 应用程序,感兴趣的同学可以看这里:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Kotlin 普及度增加,代码质量比 Java 更高?
加载中

精彩评论

棱语曲
棱语曲
换汤不换药,怎么快怎么来。对于程序猿而言,效率就是时间,时间就是少加班,少加班就是多活几年
依然藏锋

引用来自“福嘞娃”的评论

我不管,java还是宇宙最好的语言
java 生态宇宙第一!
笨笨小锅锅
笨笨小锅锅
坐等flutter一统江湖
沙发迪
沙发迪
kotlin 真的不错,我一直用java和python真的很快
zqq90
zqq90

引用来自“风流直上三千尺”的评论

我想不是kotlin使得代码质量提高,而是因为乐于学习新技术的一般是技术水平较高的人。
这里的 "较高" 用的非常恰当
学习新技术确实是一个分水岭,但绝非天花板
1. kotlin 的一些福利并非是 java 不能解决的,
2. 大点儿的生产项目更看重整个生态(流程,工具,成熟的产品等)以及其他评论所说的人才成本, kotlin 还是一个新鲜的还在增长的黑盒,风险不可控
3. 开展"大"的项目的机会并不多(有待踩坑),因为"较高水平"的人上位的还不够多

最新评论(15

zqq90
zqq90

引用来自“风流直上三千尺”的评论

我想不是kotlin使得代码质量提高,而是因为乐于学习新技术的一般是技术水平较高的人。
这里的 "较高" 用的非常恰当
学习新技术确实是一个分水岭,但绝非天花板
1. kotlin 的一些福利并非是 java 不能解决的,
2. 大点儿的生产项目更看重整个生态(流程,工具,成熟的产品等)以及其他评论所说的人才成本, kotlin 还是一个新鲜的还在增长的黑盒,风险不可控
3. 开展"大"的项目的机会并不多(有待踩坑),因为"较高水平"的人上位的还不够多
guojerry
guojerry

引用来自“风流直上三千尺”的评论

我想不是kotlin使得代码质量提高,而是因为乐于学习新技术的一般是技术水平较高的人。
有道理
沙发迪
沙发迪

引用来自“福嘞娃”的评论

我不管,java还是宇宙最好的语言

引用来自“依然藏锋”的评论

java 生态宇宙第一!
kotlin真的不错,我一直用java和python真的很快。哈哈哈哈
沙发迪
沙发迪
kotlin 真的不错,我一直用java和python真的很快
就像风
就像风
代码更少通常也意味着 bug 更少。公司内部使用 kotlin 已超过1年的时间(服务端)。:+1: 支持一下 kotlin。
带刀的麦兜
带刀的麦兜
所以离职着急走 根本找不到人交接考虑过
李嘉图
李嘉图
kotlin 一看就不喜欢,鄙视java的语言,都或多或少带了自己的毛病
依然藏锋

引用来自“福嘞娃”的评论

我不管,java还是宇宙最好的语言
java 生态宇宙第一!
福嘞娃
福嘞娃
我不管,java还是宇宙最好的语言
棱语曲
棱语曲
换汤不换药,怎么快怎么来。对于程序猿而言,效率就是时间,时间就是少加班,少加班就是多活几年
返回顶部
顶部