做者 / 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 的第一步!