2013年12月4日水曜日

WPFではMVVMがいいってよく聞くんだけど、MVVMって何?

質問元ネタ:WPF Programming Methodology


Q. WPFではMVVMがいいってよく聞くんだけど、MVVMって何?

私がこの質問に答えるとしたら・・・
ModelとViewとViewModelでMVVMです。
で、ひとまず覚えておくべきは、

・カスタムコントロール作るとき以外、コードビハインドは書かないこと

・ViewはViewModelの知識を持たないこと
 (基本全部Bindでなんとかしろってことね)

正直、覚えておくべき大原則はこれくらいだと思う。

じゃあ、どうやって・・・って言う話は、
やはり改造タスクとかをしながら、
都度検索しながらやっていくしかないと思います。

おそらく、
Bindの複雑さに何度も心が折れそうになるでしょう。
なんでBehaviourなんて定義しないといけないのかと思うでしょう。
コードビハインドを書く誘惑に何度もやられそうになるでしょう。

コードビハインドなくても、9割がたなんとかなります。
この言葉を信じて妥協せずに(つまり、大原則を破らずに)
コードを書くことでMVVMはやっとできあがります。

でも、そこまでして何のメリットがあるのか・・・。

「ViewModelの単体テストが書ける」
これはまず一つあると思います。

あと、よく言われるのが、「ViewをDesignerの人が担当できる」
これは、ないなぁ。
よっぽどの組織でない限り、結局xaml触るのは、Programmerですよ。

「Viewだけすり替えることができる」
そんなケースもほぼないわぁ。
お客さんView変えたら怒るもん。
あと、Viewだけ変えても投資対効果不明だもん。

とどのつまり唯一、単体テストだけが救いのように思います。

蛇足ですが、あんまりViewModelのクラスが大きくなると、
単体テストで書くのが大変になるのでお気をつけて。
そして、単体テストの投資対効果は神のみぞ知る世界である。

「コードビハインドで書いた方が絶対早く終わるぜー!」
誘惑にやられそうになった人。お気をつけて。

0 件のコメント:

コメントを投稿