coroutineのベストプラクティス
GoogleのAndroidDevelopersサイトにあるKotlinコルーチンのベストプラクティスを元に自分のソースを見直してみました。
元記事はこちらです
Android でのコルーチンに関するベスト プラクティス
ディスパッチャを挿入する
まとめると「suspendとかflowとかを作成するときに、「Dispatchers.IO」をハードコードするとテストしづらいよ」ということらしい。確かに。
変更可能な型を公開しない
「バグがあったときに、値を変更できるポイントが分散しているといろいろ面倒だから、値の変更を外からできなくしましょうね」ということですね。サイト上では例として、MutableStateFlowはprivate valで宣言して非公開に、公開するのはStateFlowでということのようです。
(ちょっと脇道)MutabaleStateFlow.asStateFlow()
あれ?MutableStateFlowからStateFlowへの変換の時に、asStateFlow()使ってないですね。いらないのかな?
疑問だったので調べました。
非常に良くまとまっていたのがこちらのサイトです。
asStateFlowをつけると、ReadonlyStateFlowとして生成されるので安心ということですね。
つけるようにしていこうと思います。
完成
完成コードはこちらです。