私は最近MVVMパターンを使い始めました。私はそれを使用したいくつかのプロジェクトを持っていましたが、新しいプロジェクトがあれば、それが新しいプロジェクトにうまく収まることがわかります。MVVMを使用しない場合は?
MVVMを使用するには、を使用しないでください。それともどこでも使える素敵な模様ですか?
MVVMが最適ではないいくつかのシナリオを記述してください。
私は最近MVVMパターンを使い始めました。私はそれを使用したいくつかのプロジェクトを持っていましたが、新しいプロジェクトがあれば、それが新しいプロジェクトにうまく収まることがわかります。MVVMを使用しない場合は?
MVVMを使用するには、を使用しないでください。それともどこでも使える素敵な模様ですか?
MVVMが最適ではないいくつかのシナリオを記述してください。
私はMVVMを使用しない2つの状況を考えることができます。
ビューモデルとモデルを分ける必要がないほど簡単なアプリケーションの場合は1つです。私がINotifyPropertyChanged
とRelayCommand
または2を実装すると、クラスがあまりにも上手くいくのですか?そうでない場合は、別のクラスを作成する手順をスキップすることがあります。あるいは、機能モデルのUIをモックアップし、クライアントが噛み付いた場合に実際のバックエンド機能を実装することを心配するビューモデルが必要な場合もあります。
もう1つは、十分なパフォーマンスが必要な場合で、ビューに十分なオブジェクトがあるため、WPFオブジェクトを直接操作するコードを記述する必要がある場合です。実際にはそれをベンチマークしたわけではありませんが、1000個の粒子を含む配列を繰り返して描画し、TranslateTransform
を直接(実際にはそれらの位置を決める最速の方法である場合)変更することは合理的に確信しています基本プロパティを変更してバインドするよりも速く実行できます。
小さなプロジェクトをしたいときや、いくつかの方法(WPF/Silverlight/WEB/Dll)で実行する予定がないときは、MVCで十分です。
MVVMは、特定の瞬間以上に使用されていないツールであれば、私はしません。
多くの「小さな」プロジェクトでは、私はまだ始まっていないし、後でMVVMに変更しました。プロジェクトIMOをもっときれいにして、すべてのプロジェクトに同様の構造を与えます。これは、クライアントが小さなリクエストを持っている場合、いくつかの年配のコードでいくつかのものを素早く変更するのに役立ちます。私は私が向きを変えるのに多くの時間を失うことはありません。
もう1つの利点は、私が1つのテクニックに焦点を当てることができるので、ライブラリをきれいに保つことが容易であり、したがって保守と拡張に時間がかかることです。
すべては、あなたが何をしたいかによって異なります。
大規模なテストなどを必要としない小さなツールやプロジェクトを作成している場合、MVVMは過剰な作業になります。
おそらく、MVVMの主な利点は、コードユニットがビジュアルレイヤーから抽象化してテスト可能になることです。信頼性が高く、顧客など(そしてエンドユーザーとしての自分自身だけでなく)で使用される大規模なプロジェクトの場合、MVVMは使用するのに適した設計パターンです。
私は一言で言えば推測 - あなたは、単に、その後の周り台無しに小さなプロジェクトを作成している場合はMVVMはヨーヨーがバズーカ:)
短い答えでアリを殺すしようとするようなものだ:使用しないでくださいWPF/Silverlight /強力な自動バインディングで私が知っている技術を使用していない場合は、MVVM。
長い回答:他のパターンは、WPF/SilverlightのMVVMよりも優れた単体テストを容易にします。 私はあなたが私の答えのもう一つを見てみることをお勧めします:Why should I use MVVM in Silverlight app?
SilverlightフォーラムでA vent about MVVM developmentをご覧になり、MVVMの利点と欠点のいくつかについて説明します。
私は2番目のシナリオについても考えていますが、MVVMを使用してどれだけパフォーマンスが低下しているかはわかりません。それはMVVMを使用した場合のパフォーマンス上の不利益を知り、直接的なプロパティ操作ではなくデータバインディングを持つことを知ってうれしいです。 – Vitalij