teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ViewModelにCommandは置くべきでないという主張を撤回し、訂正しました。

2020/06/28 11:48

投稿

tor4kichi
tor4kichi

スコア773

answer CHANGED
@@ -2,8 +2,11 @@
2
2
 
3
3
  ざっくり説明するとModelクラスは「アプリに必要なデータ構造、データ処理、そして副作用の起点となるメソッド・コマンド・プロパティ」を持たせます。
4
4
 
5
- 一方でViewModelクラスは「VMはVとMを繋ぐだけ。Viewに渡すModelの交通整理をするのみに留める。ViewModelはデータ処理の知識を知ってる必要がないので、特に副作用が発生するCommandをViewModelに実装するべきではないはず」と個人的に理解しています。
5
+ 一方でViewModelクラスは「VMはVとMを繋ぐだけ。Viewに渡すModelの交通整理をするのみに留める。~~ViewModelはデータ処理の知識を知ってる必要がないので、特に副作用が発生するCommandをViewModelに実装するべきではないはず」と個人的に理解しています。~~
6
6
 
7
+ > (2020/06/28 訂正)
8
+ ViewModelにCommandを置かないと、今度はModel側にCommandというViewの都合の一種が漏れてしまいます。Commandは極力ViewModelに置くべきです。結果的に誤った解釈を提示してしまい、すみませんでした。
9
+
7
10
  この2点を理解した上で「ViewにVMを通じてModelを直接渡してUIを作っていく」とするのが一つの方針になるのかなと思います。
8
11
 
9
12
  また、「Personクラスの出力処理をViewModelに書くのはModel的でNG、だけどどうすれば」という部分については、