Kotlin 普及度增加,代码质量比 Java 更高?
Google 在 I/O 2017 上宣布 Android 加入了對(duì) Kotlin 編程語(yǔ)言的支持。如今,在所有開(kāi)源的 Android 應(yīng)用程序中,我們能發(fā)現(xiàn)有 12% 都是由 Kotlin 開(kāi)發(fā)。Google 在 2017 年底表示 Kotlin 已經(jīng)滲透了超過(guò) 17% 的使用 IDE,Android Studio 3.0 開(kāi)發(fā)的 Android 應(yīng)用程序。
Kotlin?是一個(gè)運(yùn)行在 Java 虛擬機(jī)上的靜態(tài)類(lèi)型編程語(yǔ)言,于?2012 年開(kāi)源,采用 Apache 2.0 許可證。它與 Java 的語(yǔ)法不兼容,但設(shè)計(jì)成可以與 Java 代碼互操作,可復(fù)用現(xiàn)有的 Java 類(lèi)庫(kù),并且被認(rèn)為所需代碼量更少,而代碼更少通常也意味著 bug 更少。Google 當(dāng)時(shí)發(fā)布的 Android Studio 3.0 就添加了 Kotlin 支持,詳情你可以看這里:
重磅!Android Studio 3.0 正式版支持 Kotlin
一年后,法國(guó) Valenciennes 大學(xué)的計(jì)算機(jī)科學(xué)家 Bruno Gois Mateus 和 Matias Martinez 發(fā)表了一篇論文《An Empirical Study on Quality of Android Applications written in Kotlin language》,對(duì)用 Kotlin 編寫(xiě)的 Android 應(yīng)用程序的質(zhì)量進(jìn)行了研究。
論文原文:
https://arxiv.org/pdf/1808.00025.pdf?
他們?cè)谡撐闹忻枋隽巳绾螐拈_(kāi)源應(yīng)用商店 F-Droid 收集 925 個(gè)應(yīng)用程序,以及如何測(cè)量 Kotlin 代碼在每個(gè)應(yīng)用中的表現(xiàn),并將分析代碼“異味”(Smells)作為衡量代碼質(zhì)量的指標(biāo)。
注:“異味”(Smells)是“反模式”(anti-patterns)的另一種說(shuō)法,“反模式”是一種用于指代不良編碼模式的術(shù)語(yǔ)。 在 Java 中,The Blob(a.k.a God Objects)代表了一種常被引用的反模式。
通過(guò)對(duì)這 925 個(gè)應(yīng)用進(jìn)行分析,發(fā)現(xiàn) 109 個(gè)應(yīng)用至少有一個(gè)版本是使用 Kotlin 語(yǔ)言寫(xiě)的,其中又有 35% 的應(yīng)用只使用 Kotlin 語(yǔ)言。在包括 Java 代碼和 Kotlin 代碼的應(yīng)用中,較近的版本中 Kotlin 代碼比例提高而 Java 代碼下降。
然后分析代碼質(zhì)量:
面向?qū)ο?#xff08;OO)的反模式包括:Blob Class(BLOB),Swiss Army Knife(SAK),Long Method(LM)和 Complex Class(CC)。?
Android 反模式包括:重型廣播接收器(Heavy Broadcast Receiver,HBR),重型異步傳輸(Heavy AsyncTask,HAS),重型服務(wù)啟動(dòng)(Heavy Service Start,HSS),初始 OnDraw(Init OnDraw,IOD),無(wú)內(nèi)存解析器(No Low Memory Resolver,NLMR)和 UI 重寫(xiě)(UI Overdraw,UIO)。
在面向?qū)ο蟮姆茨J街?#xff0c;LM,CC 和 BLOB 出現(xiàn)在至少 92% 的 Kotlin 和 Java 應(yīng)用中,其中 OO “異味”在 Kotlin 應(yīng)用更為常見(jiàn)。但研究者發(fā)現(xiàn),在這 Android“異味”中,Java 比 Kotlin 更容易受到三種“異味”的影響。
研究者還在論文中提到,Kotlin 的采用使得至少 50% 的 Android 應(yīng)用程序的質(zhì)量提高了。因此認(rèn)為,Kotlin 的代碼質(zhì)量更高。
另外,這兩位研究員也比較了?Objective-C 應(yīng)用程序和 Swift 應(yīng)用程序,結(jié)果發(fā)現(xiàn)?Android 應(yīng)用程序的異常值高于 iOS 應(yīng)用程序,感興趣的同學(xué)可以看這里:
https://hal.inria.fr/hal-01471294/document?
總結(jié)
以上是生活随笔為你收集整理的Kotlin 普及度增加,代码质量比 Java 更高?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 7 个致命的 Linux 命令
- 下一篇: 初识flask