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

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)

分享創造快樂