歡迎光臨
每天分享高質量文章

Kotlin 普及度增加,代碼質量比 Java 更高?

(點擊上方公眾號,可快速關註)


來源:OSC-達爾文 ,

mp.weixin.qq.com/s/cQjPvi0zkmiOnC-6Oj_5JA

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 更少。

一年後,法國 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

【關於投稿】


如果大家有原創好文投稿,請直接給公號發送留言。


① 留言格式:
【投稿】+《 文章標題》+ 文章鏈接

② 示例:
【投稿】《不要自稱是程式員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/

③ 最後請附上您的個人簡介哈~



看完本文有收穫?請轉發分享給更多人

關註「ImportNew」,提升Java技能

赞(0)

分享創造快樂