2010-12-07 7 views
0

私はWPFビューモデルとデータモデルクラスに名前を付けるときに使用する命名規則を理解しようとしており、既にこれを行った他の人からの入力を感謝します。WPFビューモデルとデータモデルクラスの命名規則を選択するにはどうすればよいですか?

私の問題は、名前を付けるデータモデルとビューモデルのクラスがほぼ同じ名前であることです。

例として、私はフローチャートエディタを持つアプリケーションを作成しています。私のデータモデルでは、私はNodeクラスを持っています。

私のビューモデルでは、データモデルクラスをラップし、IsSelectedなどのビュー固有のプロパティを追加するNodeクラスも用意します。

混乱を避けるために、これらのクラス名を実際に区別する最良の方法は何ですか?

明らかにそれらは異なる名前空間にあります。例えばFlowchart.NodeおよびFlowchartView.Node。だから彼らは本当に別のクラス名を持つ必要はありません。それは、私が言及したように、混乱を避けるために、異なるクラス名が助けてくれると思うと言いました。

NodeNodeViewという名前を付けてもいいと思っていましたが、それは妥当と思われますが、なんらかの理由で私に悪い味が残っています。

これは他の人が使っている命名規則についてのアドバイスです。これは明らかに単純な問題ですが、再び良い名前を見つけることは絶え間ない戦いのようです。

+0

これは難しい回答です。 MVVMには厳しいルールはありません。私の知る限り、一般的な慣行はありません。私はあなた自身を選んで100%それに固執すると言うでしょう。 – Will

答えて

4

"ViewModel"ですべてのビューモデルに接尾辞をつけ、 "View"ですべてのビューに接尾辞を付けます。したがって、NodeViewModel,NodeView、およびNode(データクラス)があります。しかしこれは単なる個人的な大会です。私はそこに他にも同じように有効なものがあると確信しています。

0

名前空間

  • システム - モデルとしても知られ、メインシステムのクラスが含まれています。
  • System.ViewModels - ビューモデルを含みます。
  • System.Windows - プレゼンテーションに使用されるものがすべて含まれています。

私はすべての名前空間を含んでいます。

大きなプロジェクトでは、名前空間ごとに1つのプロジェクトを作成します。深い名前空間を避ける。 フレームワーク設計ガイドラインを参照してください。

名前空間が十分明確であるため、接尾辞を追加しません。たとえば、 "Alerts"のコレクションを表示するUserControl(ビュー)を作成した場合、そのユーザーコントロールの名前はAlertsPanelまたはAlertsListBoxまたは 'AlertsItemsControl`となります。

例外は、view-modelsです。 3つの名前空間をすべて使用する必要がある場合に発生する自然な命名の競合を避けるため、ViewModelを追加する方がよいことがわかります。 using VM = System.ViewModels;VM.Foo oFoo = new VM.Foo(new Foo());と、同じ名前を共有するモデルとビュー・モデルクラスを可能にする「ビューモデル」を追加することの代替として

、。

1

ほとんどの.NET開発者が期待しているように、名前空間とフォルダを同期させて保存します。言うまでもなく、各クラスはそれ自身のファイルにあります。これにより、プロジェクトのソースを簡単に見つけることができます。

/Views 
namespace: <Company>.(<Product>|<Technology>)[.<Feature>].Views 
/ViewModels 
namespace: <Company>.(<Product>|<Technology>)[.<Feature>].ViewModels 
/Models 
namespace: <Company>.(<Product>|<Technology>)[.<Feature>].Models 

クラスを区別するために接尾辞を追加する必要はありません。名前空間はすでにそれをしています。

+0

私の投票は 'namespace:です。( | )[。 [] [。 ] ' – Bijan

関連する問題