MVVM

SwiftUIでのMVVM例 - 本当にMVVMはComposableではないのか

Qiitaに【SwiftUI】なぜ、MVVMをやめて、The Composable Architecture(TCA)を採用するのか?という記事が上がっていました。 趣旨は以下のようです。 MVVMはComposableではないTCAはComposableであるMVVMよりTCAがおすすめ本当にMVVMはComposableではないのでしょうか?この記事のMVVMのコードにはいろいろ問題があるので、修正してSwiftUIでのMVVMのコード例を作成してみましょう。 当該記事のコードの問題点当該記事のMVVMのコードはCounterViewに対するViewModelをRandomCounterViewのViewModelに流用していることです。 RandomCounterViewにはRandomCounterViewModelを作成するのが一般的な実装です。 もう一つの実装方法はモデルレベルで抽象化してしまう方法です。この記事ではこの方法を採用します。 TCA版ではCounterViewをCounter/RandomCounterに利用しているのでMVVMでもそのように実装してみましょう。 修正版MVVM修正してみましょう。 まずモデルです。 protocol Countable { var count: Int { get } func increment() func decrement() } class