私はMVVMの概念にかなり慣れていますが、これまでのところ、多くの柔軟性が得られるようにしています。ただし、コードを管理するための適切な方法を見つけるのに苦労しています。私のソリューションでは、xxxView.cs
、xxxViewModel.cs
、yyyView.cs
、yyyViewModel.cs
、zzzView.cs
、zzzViewModel.cs
など、いくつかのクラスがフォルダー内にあるだけです。ソリューションが混雑し始めており、探しているファイルを見つけるのが難しくなっています。これらのファイルを整理する標準的な方法はありますか? ViewおよびViewModelフォルダーを作成して、ソリューションを分離してクリーンアップしますか、それとも他の方法を見つけてもらえますか?
別のプロジェクトを使用します
そして、それらのプロジェクト内で、追加の構造を提供するためにフォルダーを追加する可能性があります。
ViewプロジェクトはViewModelを参照し、ViewModelプロジェクトはモデルを参照します。
多くの場合、画像は独自のフォルダを受け取ります。これまでのところ、リソースディクショナリ、コンバーター、および拡張オブジェクトは、レイヤーのメインプロジェクトフォルダーに配置されています。
別の方法として、「主要なアプリケーション領域」をプロジェクトとして持つこともできます。次に、各エリア内にV/VM/Mフォルダーがあるか、関連するMVVMファイルをエリアプロジェクトフォルダーに配置します。
私は頻繁に一度に複数のビューで作業する必要があるので、このアプローチはあまり好きではありません。
この方法では、リソースディクショナリなどの再利用を制限しています。プロジェクトの相互参照は、維持が困難になる可能性があります。ただし、専用の「共通リソース」プロジェクトを作成することは、この問題を緩和するためのアプローチになります。
あるプロジェクトでは、ネストが多く類似した名前の60の「画面」がありました。
ビュー、ViewModels、およびControllersフォルダーでの整理は、フォルダーのネスト構造全体が3つのメインフォルダーすべてにレプリケートされ、ビューモデルからそのビューに戻ったり、戻ったりするので、操作が非常に困難でした。
次のように、同じ画面または機能領域に属するファイルをまとめることで、作業しやすい組織になると私は考え続けています。
主な理由は、そのプロジェクト(および私が作業した他のプロジェクト)では、これらのことは非常に静的なためです。小さな変更のみを実行します。また、大規模なリファクタリングの場合、1つのファイルから別のファイルに移動する方が簡単です。それらをソリューションエクスプローラーで一緒に表示できるため、非常に直感的です。
また、Visual Studioで[アイテムの追跡]オプションを有効にしている場合、常に上下に移動することに夢中になってしまうことはありません。
個別のプロジェクトが必要ない場合は、少なくともプロジェクトフォルダーと名前空間で異なる部分を分離してください。
別のパターンを使用しています。関連するビュー、ビューモデル、モデルを、名前空間で区切られた同じアセンブリに保持します。新しい関係が作成されるたびに、新しいアセンブリが作成されます。