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
 










