Kotlin 以其简洁实用的语法,赢得了很多Java 开发者,尤其是 Android 开发者的喜爱与应用。然而,虽然我们使用 Kotlin 进行编码,可能并没有书写出地道的 Kotlin 代码,亦或者是遵照写Java的思维,用Kotlin的语法 来编码。
本文将通过多出代码示例,分为Do not
(不建议)和Do
(建议)两部分,分别代表着不太好的实现和推荐的实现方式,来展示地道的 Kotlin 编码方式。
进行非null判断
//Do not |
进行类型转换并访问一些属性
// avoid if type checks |
避免使用!!
非空断言
//Do not |
补充:
- 使用
!!
断言,一旦断言条件出错,会发生运行时异常。
判断可能为null的boolean值
// Do not |
利用if-else
,when
,try-catch
的返回值
//Do not |
善用 apply
/also
/with
//Do not |
data class Request(val uri: String) |
class Navigator { |
直接使用top-level方法,而不是Object里的方法
//Do not |
使用Kotlin的默认参数特性,而不是方法重载
//Do not |
优先定义并使用扩展方法,而不是Util方法
//Do not |
使用方法引用
data class NewsItem(val content: String, val isFake: Boolean) |
使用inline修饰高阶函数(参数为函数时)
//Do not |
备注:
- 关于inline的问题,可以参考Kotlin 中的 Lambda 与 Inline
把函数参数尽可能放到最后
//Do not |
使用mapNotNull
//Do not |
尽可能使用只读集合
fun parseArguments(arguments: Map<String, String>) { |
适宜情况下使用Pair
或Triple
// Use Pair or Triple |
使用lazy 替代繁琐的延迟初始化
data class Config(val host: String, val port: Int) |
使用lateinit 处理无法再构造函数初始化的变量
//Do not |
善用Data class的copy方法
//Do not |
针对函数类型和集合使用typealias
//Do not |
使用含义更加清晰的substringBefore
和substringAfter
//Do not |
以上就是一些相对更加Kotlin style的代码示例,如有补充,请在下方评论指出。谢谢。
相关阅读
- 研究学习Kotlin的一些方法
- Kotlin 中的 Lambda 与 inline
- 有点意思的Kotlin的默认参数与JVMOverloads