Kotlin 普及度增加,代码质量比 Java 更高?
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 支持,詳情你可以看這里:
重磅!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?
總結
以上是生活随笔為你收集整理的Kotlin 普及度增加,代码质量比 Java 更高?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7 个致命的 Linux 命令
- 下一篇: 初识flask