質問: mvvm:vmは値タイプである必要がありますか? 私は最近、gary bernhardtの「boundaries」( https://www.destroyallsoftware.com/talks/boundaries )とandy matuschakの「controllingcomplexity」( https ://realm.io/news/andy-matuschak-controlling-complexity/ )私はまた、私の質問につながるmvvmパラダイムについて学び、取り組んできました。 viewmodelは不変/値タイプである必要がありますか?時々私はそう思う、他はそうではない。私は、viewmodelが命令型シェルと機能コアの間のリンクであり、混乱していると思います。これら2つの間のリンクは、本質的に命令型または機能型である必要がありますか?
回答: ビューモデルオブジェクトの主な目的は、ビューとモデルの間に抽象化のレイヤーを提供することです。これにより、コードビハインドスパゲッティを記述する必要がなくなります。ビューロジックを独自のオブジェクトに配置することで、ビューロジックを実際のuiサーフェスから切り離し、そのロジックをテスト可能にします。不変のビューモデルオブジェクトのポイントは何でしょうか?不変性で得られるものを検討してください。スレッドセーフと、複数のエージェントによって操作されている可変オブジェクトよりも推論が容易な関数合成からべき等の結果を計算する機能です。これらの条件のいずれかがビューモデルオブジェクトに存在しますか?番号。uiは本質的に変更可能です。テキストボックスにデータを入力するチャンスを1回だけ、そして1回だけ与えるつもりはありませんか?さらに、モナドのようなメカニズムを介して現実世界と対話するために純粋に関数型の言語を必要とするのは、現実世界の変更可能な性質です。