ViewModelクラスにはどのような命名規則が適していますか?どのようにViewModelクラスに名前を付けますか?
例:HomeController、Index view? HomeIndexViewModelが正しく表示されません。
ViewModelクラスにはどのような命名規則が適していますか?どのようにViewModelクラスに名前を付けますか?
例:HomeController、Index view? HomeIndexViewModelが正しく表示されません。
EmployeesViewData。
これは私が使用しているもので、サンプルアプリケーションでも見てきたものです。
追加した例について: Imhoクラスの名前には、そのデータの種類を指定する必要があります。 ".... IndexViewData"は無意味です。そのページには正確に何が表示されますか?それを1つまたは2つの単語で要約し、その後ろに 'ViewData'を追加してください。
それ以外の場合は、コントローラの名前を使用して「インデックス」を削除してください。 HomeViewDataは私にとってうまく聞こえます。
私はアイデアは「ViewModelには、」我々は、プレゼンテーションの懸念を扱っているという事実を強調し、任意のドメインモデルオブジェクトからのviewmodelsを曖昧性を除去することをあるなどHomeViewModel、または以前の従業員の例を使用して、CreateEmployeeViewModel、EditEmployeeViewModelを、好みますあなたが持っているかもしれない。
プレゼンテーションのモデル名は、提示するプレゼンテーションの種類にとらわれないようにしています。私は最初にASP.NETビューのモデルオブジェクトを使用するかもしれませんが、後でWCFまたはWinFormsアプリケーションで使用することもあります。
ProductsWithPageInfo
ProductWithAttributesAndTags
ClientAndBillingDetail
UserAccountWithAssociatedGroups
等
:私は、「ViewDataを」、「ViewModelに」、「モデル」でそれらをmuddyingせず、彼らは論理的に、彼らは、含まれているかを説明するように、私のモデルに名前を付けるなど例を試してみてください
私はWroxの本の第1章を読む直前に私が使い始めた名前の一部としてEnvelopeを使用しており、より一般的に受け入れられている用語がViewModelであることを発見しました。
しかし、私が作成するこれらのViewEnvelopesは、Viewに渡したいと思う2つ以上の(通常は無関係な)強く型付けされたモデルを持っている場合にのみ、非常に簡単なカプセル化用です。彼らはではなく、には他の機能が含まれています。エンベロープはこの意味での配信メカニズムとしてのみ意図されていますが、ViewModelという用語は私の使い方が分かりにくく、その本来の目的は何か
たとえば、Customerオブジェクトと関連しないNewsTickerオブジェクト(Customer Updateビューなど)を配信するためだけに存在するCustomerUpdateEnvelopeクラスを作成することがあります。
私はそれが明確で曖昧さのないだから、次のパターンを使用します。
むしろ後半に、この特定のスレッドのために、しかし、私はViewModel naming conventionsに関する少し詳細な提案をブログの投稿に書いていますが、これは他の人にとって役に立つかもしれません。
ProductWithAttributesAndTagsも必要なProductsWithPageInfoのページが複数あるページがある場合はどうしますか? – Alex
まあ、これらの型はすでに他の型の集約です。たとえば、ProductsWithPageInfoにはIList、int PageNumber、int PageCountがあります。各プレゼンテーション「モデル」オブジェクトには、特定のビューをレンダリングするために必要なものがすべて含まれています。時には、モデルにたくさんのものがある場合は、Etcを最後に追加します:ProductAttributesPurchaseHistoryEtc、ここでEtcはページ名やカウントなどの細かい部分を意味します。クラス。あなたの例の場合:ProductsWithAttributesAndTagsEtc –
jrista