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

2018 年 8 月 8 日 开源中国

#扫描上方二维码报名成都源创会#


作者:OSC-达尔文

来源:开源中国(oschina2013)

转载请在文中注明来源和作者


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 应用程序的质量进行了研究。


论文原文:


  • https://arxiv.org/pdf/1808.00025.pdf


他们在论文中描述了如何从开源应用商店 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 应用程序,感兴趣的同学可以看这里:


  • https://hal.inria.fr/hal-01471294/document


开源中国征稿开始啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 200 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿





推荐阅读

微软按月收费桌面计划,Win 10 将变成 Win 365?

由浅入深,聊聊权限设计

Istio 1.0 正式版发布,可用于生产环境!

福布斯:谷歌的 Flutter 和 Fuchsia 将成下一代新兴技术

网站 HTTP 升级 HTTPS 完全配置手册

点击“阅读原文”查看更多精彩内容


登录查看更多
0

相关内容

Kotlin 是一种运行于 Java 虚拟机上的静态类型编程语言。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
已删除
架构文摘
3+阅读 · 2019年4月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
Java开发者必看!机器学习开发库精选
云栖社区
5+阅读 · 2018年8月22日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
92+阅读 · 2020年2月28日
Nocaps: novel object captioning at scale
Arxiv
6+阅读 · 2018年12月20日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
3+阅读 · 2018年3月13日
VIP会员
Top
微信扫码咨询专知VIP会员