Kotlin 已迅速成为 Android 开发的首选语言,并且在服务器端、桌面端和多平台项目
中也越来越受欢迎。它的语法简洁、类型系统健壮,并且与 Java 无缝互操作
,使其成为一把强有力的工具。但写好 Kotlin 不只是掌握语法;更重要的是采纳一套工程化的最佳实践,才能让代码更清晰、更安全、更易维护。
本文将涵盖每位开发者都应掌握的 Kotlin 核心最佳实践。
本文并非系统性的编程教程,而是我多年编写 Kotlin 代码过程中积累的一些经验与心得。每个人踩过的坑和走过的路各不相同,读者可能会有不同的看法,就当是一位 Kotlin 开发者的随笔分享即可。
尽量优先使用 val
,避免滥用 var
不可变性能减少错误并让代码更可预测。默认使用 val
,只有在变量确实需要被重新赋值时才使用 var
。
val name = "Tyhoo" // 不可变的
var age = 25 // 可变的(谨慎使用)
例如以下代码,使用 val
优化会非常清晰:
var result = 0
if (a > b) {
result = 1
} else {
result = -1
}
优化后:
val result = if (a > b) {
1
} else {
-1
}
明智地使用空安全特性
Kotlin 最强的特性之一是空安全。除非某个值确实可能为 null
,否则应始终优先使用非空类型。使用安全调用操作符 ?.
和 Elvis 操作符 ?:
来优雅地处理可空值。
val email: String? = getUserEmail()
println(email ?: "No email provided")
除非你能百分之百确定某个值不为 null,否则不要使用 !!
强制解包。
哦,对了,别忘了 String?
有个 orEmpty
扩展:
val email: String? = getUserEmail()
setEmail(email.orEmpty())
使用数据类(data class)
对于POJO
,优先使用数据类
,因为数据类会自动生成 equals()
、hashCode()
、toString()
和 copy()
方法。
data class User(val id: Int, val name: String)
这使代码更精简,显著减少样板代码。
优先使用扩展函数
与其用杂乱的工具方法(xxxUtils
),不如用扩展函数以更清晰的方式为类型添加功能。