mcpField
K
kotlin-concurrency-and-flow

kotlin-concurrency-and-flow

github.com/chrisbanes开发1.1k1.1k 次安装1 天前更新
代码仓库

关于 kotlin-concurrency-and-flow

用于审查和设计 Kotlin 协程与 Flow 行为的编码技能,指导工作归属、取消、状态、事件、共享和缓冲语义的决策。

主要功能

  1. 01梳理协程归属与取消边界
  2. 02维护 suspend API 契约
  3. 03选择 Flow 状态与事件语义
  4. 04按主题查找参考资料

适用场景

  1. 01审查协程生命周期与失败处理
  2. 02选择一次性事件的传递语义
  3. 03确定 Flow 共享与缓冲方式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chrisbanes/skills --skill kotlin-concurrency-and-flow

安装后在 Claude Code 中输入/kotlin-concurrency-and-flow确认已加载。

附带文件references/flow-state-events.mdreferences/structured-concurrency.md

详细介绍

Kotlin 并发与 Flow

核心原则

为异步工作指定明确的所有者和生命周期,然后使用交付与重放语义符合产品约定的原语来建模持久状态和瞬时事件。

流程

  1. 确定每个协程的所有者、取消边界、生产者、消费者、持久状态和瞬时事件。
  2. 在更改 API 之前,将现有的调用方可见约定与所需的所有者和生命周期进行比较。如果挂起式 API 已经让调用方拥有取消、结果和失败的处理权,则保持不变;不要仅为方便而添加作用域、launch、回调或 deferred 包装器。
  3. 选择生命周期能够拥有该工作的作用域;不要保留任意作用域,也不要在非挂起式 API 后隐藏无结构化的启动操作。
  4. 将可渲染的当前数据建模为状态;只有在明确接受事件丢失和重放行为时,才将命令式的一次性工作建模为事件。确认是由一个消费者处理每个事件,还是必须将事件发送给每个活跃消费者。Channel 将每个事件交给一个消费者;配置好的 SharedFlow 会向活跃消费者广播。如果消费者约定尚不明确,请说明两种选项以及作出选择前需要确定的事项。对于必须跨越收集器空档期保留的单消费者导航交接,选择有界的 Channel(Channel.BUFFERED)(而不是 UNLIMITED),并通过 receiveAsFlow() 暴露;如果已确认事件丢失是缺陷,就不要保留重放数为零的 SharedFlow。
  5. 根据生产者和消费者的生命周期选择 Flow 共享与缓冲语义,而不是套用默认值。
  6. 阅读下方与相关主题对应的参考资料。
  7. 当取消、重启、重放和失败行为都能从公共 API 中看出,并且调用方无需猜测工作由谁拥有时,即可完成。

主题路由

信号阅读
存储的 CoroutineScope、原始 Thread 或 Executor 工作、init { launch }、即发即忘 API、runBlocking、宽泛捕获或取消边界结构化并发
StateFlow、SharedFlow、Channel、stateIn、SharingStarted、.value、状态更新、哨兵值或一次性事件Flow 状态与事件
运行 Gradle 以验证更改Gradle 运行;切勿直接使用 ./gradlew
Compose 收集或 UI 副作用处理Compose 状态与副作用

评论

支持 Markdown