做者 / Florina Muntenescu, Android Developer Advocatehtml
每個用戶都但願從應用中得到無縫體驗。崩潰會致使差評增長、應用卸載,甚至有損品牌承認度。與社區交流後,咱們瞭解到開發者採用 Kotlin 的主要緣由之一是爲了更安全的代碼。我將在本文中講述 Kotlin 提升開發者代碼穩定性的幾種方式,也會經過 Google Play 商店統計的結果,看看使用 Kotlin 與崩潰數量之間是否有相關性 (劇透一下: 固然有!)。android
應用質量不只影響着用戶體驗,應用的大量崩潰還會影響一些其餘方面:算法
使用 Kotlin 構建的應用出現崩潰的可能性下降了 20%。編程
Kotlin 在其中扮演了什麼角色?咱們研究了 Google Play 排名前 1,000 的應用,發現使用 Kotlin 的應用與不使用 Kotlin 的應用相比,其用戶崩潰率低 20%。安全
好比 Kotlin 的空安全性就讓點評的 Android 應用團隊讚不絕口,並且團隊開發者還能夠經過在 Java 代碼中使用 @Nullable 和 @NonNull 等註解來確保 Kotlin 代碼得到正確的可空性推斷。總體上看,Kotlin 的空安全特性幫助點評 Android 應用將空指針致使的崩潰從日均 3 個下降至 0。app
NullPointerException (空指針異常) 是 Google Play 上崩潰的第一大緣由。2017 年,中國電信營業廳應用團隊就開始使用 Kotlin,如今他們的新項目大約有 50% 的代碼都是 Kotlin 編寫。團隊成功將空指針異常的出現機率 下降了 80% 之多。編程語言
爲了不 NullPointerException,您須要確保正在處理的對象引用非 null,而後再調用方法或嘗試訪問其成員。在 Kotlin 中,是否可爲 null 是類型系統的一部分。例如,一個變量從一開始就須要被聲明爲可爲 null 或不可爲 null。在使是否可爲 null 成爲類型系統的一部分後,您沒必要再依賴內存和對代碼庫的瞭解,也沒必要依賴編譯時警告 (若是用 @Nullable 註解字段/參數)。因爲是否可爲 null 被強制執行,您將獲得編譯時錯誤,而不只僅是警告。官方文檔 介紹了處理是否可爲 null 的方式。ui
開發者會無心中引入一些問題,有些問題可能很是微妙且難以察覺。如下是使用 Kotlin 能夠避免的一些問題。google
hashCode() 和 equals()spa
若是兩個對象相等,那麼它們的哈希代碼應該相同。然而,常常會發生忘記實現其中一個方法或者在類中添加新屬性時忘記更新。當處理僅用於保存數據的類時,請使用 Kotlin 數據類。經過數據類,hashCode() 和 equals() 將由編譯器生成,會在您更改類屬性後自動更新。
兩個對象是在結構上相等 (具備同等內容) 仍是在引用上相等 (指針相同)?在 Java 編程語言中,對於原語,您始終會使用 ==,所以,一個常見的錯誤是爲對象也調用 == (引用相等),而實際上您想檢查它們是否在結構上相等 (經過調用 equals() 檢查)。首先,Kotlin 沒有原語類型,它使用的是 Int 或 String 這樣的類;所以您不須要在對象和原語類型之間作這種區分,由於每個事物都是一個對象。其次,Kotlin 爲結構相等定義了 ==,爲引用相等定義了 ===,避免在不應檢查引用相等的時候進行檢查。
使用枚舉時,一般須要確保涵蓋全部可能的狀況。這就須要使用開關或 if else 鏈。修改枚舉來添加新的值時,您必須手動檢查使用枚舉的每一個代碼段,並確保處理好新的狀況。但這很容易出錯。在 Kotlin 中,若是您使用 when 做爲表達式,就能夠依靠編譯器來處理: 若是您沒有覆蓋全部可能的分支,會出現一個編譯器錯誤。
應用穩定性對用戶和品牌相當重要。當即使用 Kotlin,下降崩潰率,提升用戶滿意度,並保持較高的應用評分讓您的用戶留存和獲取始終處於領先地位。
您能夠進一步閱讀如何 利用 Kotlin 打造更優質的應用,並經過咱們的 案例研究 來了解開發者如何從 Kotlin 中獲益。Kotlin 是 世界上最受歡迎的語言之一,歡迎訪問咱們的 使用入門 頁面,邁出您使用 Kotlin 的第一步!