1. 常用技巧
-
声明 class 时, 把非空参数都放在默认构造器中, 可空字段放在属性中
但如果是 web 应用中的 接收参数对象, 则不能这样做, 必须是先把参数置为可空, 然后再加上验证注解 @NotNull. 因为 json 解析在 注解验证之前 -
组装参数类型的代码可以使用 DSL, 看起来更直观
-
对于 jackson 处理 json, 需要引入 jackson-module-kotlin 来支持 kotlin 的 class 与 data class 的序列化与反序列化.
-
如果 lambda 函数有嵌套, 外层函数应该指定函数签名
-
对于尾递归函数, 使用 tailrec 修饰, 会对递归函数做优化, 避免栈溢出
2. 官方文档比较重要的章节
3. 实用方法
-
measureTimeMillis(block: () -> Unit): Long
返回代码块执行所需时间 -
check | checkNotNull
throw IllegalStateException -
require | requireNotNull
throw IllegalArgumentException -
error
IllegalStateException
4. 其他
4.1. 协程调试
-Dkotlinx.coroutines.debug=on