【发布时间】:2019-08-02 03:31:12
【问题描述】:
Intellij 有一个检查(即 lint 检查),它告诉您返回 Deferred 的函数应该命名为以 Async 结尾的东西。
像这样的命名约定在动态类型语言中对我来说很有意义。但是 Kotlin 有这么好的类型检查器和工具生态系统,那么为什么要依赖约定呢?
特别是因为 Kotlin 协程烘焙 structured concurrency ,该函数可能还会采用 CoroutineScope 参数,这将在调用站点提供相同的视觉提示:
suspend fun doStuff() = coroutineScope {
doStuffAsync(this /* CoroutineScope */).await()
//...
}
作为旁注,我了解检查的信息,即您很少需要返回 Deferred 而不是 suspend 函数的函数。那不是我的问题。我的问题假设您知道自己在做什么并且想要Deferred。
【问题讨论】: