2010-12-07 63 views
0

我試圖找出一個命名約定來命名我的WPF視圖模型和數據模型類,並會欣賞來自已經這樣做的其他人的輸入。如何爲WPF視圖模型和數據模型類選擇命名約定?

我的問題是,我想要命名的數據模型和視圖模型類具有幾乎相同的名稱。

作爲一個例子,我正在研究一個具有流程圖編輯器的應用程序。在我的數據模型中,我將有一個Node類。

在我的視圖模型中,我還將有一個包裝數據模型類的Node類,並添加視圖特定的屬性,如IsSelected

實際區分這些類名以避免混淆的最佳方法是什麼?

顯然他們將在不同的命名空間。例如Flowchart.NodeFlowchartView.Node。所以他們不需要有不同的類名。這就是說,我認爲不同的類名會更好地幫助,正如我所提到的,避免混淆。

我曾想過將它們命名爲NodeNodeView,我認爲這聽起來很合理,但由於某種原因給我留下了不好的口味。

所以這是一個關於其他人使用什麼命名約定的建議。這當然是一個簡單的問題,但是再次找到好名字似乎是一場不斷的戰鬥。

+0

很難回答這個問題。 MVVM中沒有任何硬性規則和快速規則。據我所知,也沒有任何一般的慣例。我會說選擇你自己的,並堅持100%。 – Will 2010-12-07 18:55:09

回答

4

我使用「ViewModel」後綴所有視圖模型,並使用「View」將所有視圖後綴。因此,您有NodeViewModel,NodeViewNode(數據類)。不過,這只是個人習俗。我確信還有其他同樣有效的東西。

0

命名空間

  • 系統 - 包括主系統類,亦稱模型。
  • System.ViewModels - 包含視圖模型。
  • System.Windows - 包含用於演示的所有內容。

簡單的項目,我包括所有的命名空間。

對於較大的項目,我爲每個名稱空間創建一個項目。避免深層名稱空間。請參閱框架設計指南

我不追加任何後綴,因爲名稱空間足夠清晰。例如,如果我創建了一個顯示「Alerts」集合的UserControl(視圖),那麼我將該用戶控件命名爲AlertsPanelAlertsListBox或'AlertsItemsControl`。

例外是視圖模型。在那裏,我發現最好追加「ViewModel」,因爲這個約定避免了必須使用所有三個名稱空間時可能發生的自然命名衝突。

作爲追加「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 2017-10-24 12:18:07