Как выбрать соглашение об именах для классов представления модели WPF и модели данных? - PullRequest
0 голосов
/ 07 декабря 2010

Я пытаюсь выяснить соглашение об именах, которое будет использоваться при именовании классов WPF-моделей представления данных и моделей данных, и буду признателен за мнение других, которые уже сделали это.

Моя проблема в том, что классы модели данных и модели представления, которые я хочу назвать, имеют почти одинаковые имена.

Например, я работаю над приложением, в котором есть редактор блок-схем. В моей модели данных у меня будет класс Node.

В моей модели представления у меня также будет класс Node, который обертывает класс модели данных и добавляет специфические свойства вида, такие как IsSelected.

Каков наилучший способ на самом деле дифференцировать имена этих классов, чтобы избежать путаницы?

Очевидно, что они будут в разных пространствах имен. Например, Flowchart.Node и FlowchartView.Node. Таким образом, им не нужно иметь разные имена классов. Тем не менее, я думаю, что разные имена классов лучше помочь, как я уже говорил, избежать путаницы.

Я думал о присвоении им имен Node и NodeView, что, как мне кажется, звучит разумно, но по какой-то причине оставляет для меня неприятный вкус.

Так что это призыв к советам о том, какие соглашения об именах используют другие. По общему признанию, это простая проблема, но, опять же, поиск хороших имен кажется постоянной битвой.

Ответы [ 3 ]

4 голосов
/ 07 декабря 2010

Я добавляю суффиксы к моим моделям представлений с помощью «ViewModel», а ко всем представлениям с «View»Таким образом, у вас будет NodeViewModel, NodeView и Node (класс данных).Хотя это всего лишь личное соглашение.Я уверен, что есть и другие, одинаково действительные.

1 голос
/ 01 августа 2014

Я буду синхронизировать пространство имен и папки, как того ожидают большинство разработчиков .NET. Излишне говорить, что каждый класс в своем файле. Это позволит легко найти источник в проектах.

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

Нет необходимости добавлять суффикс, чтобы различать классы. Пространство имен уже делает это.

0 голосов
/ 13 июня 2012

Пространства имен

  • Система - содержит основные системные классы, или модель.
  • System.ViewModels - содержит модели представления.
  • System.Windows- содержит все, что используется для презентации.

Простой проект, я включаю все пространства имен.

Для больших проектов я создаю один проект для каждого пространства имен.Избегайте глубоких пространств имен.См. Руководство по разработке структуры .

Я не добавляю никаких суффиксов, потому что пространство имен достаточно ясно.Например, если я создаю UserControl (представление), которое отображает коллекцию «Оповещений», я называю этот пользовательский элемент управления AlertsPanel или AlertsListBox или «AlertsItemsControl`.

Исключениеэто View-модели.Там я считаю, что лучше добавить «ViewModel», потому что это соглашение позволяет избежать естественных конфликтов имен, которые могут возникнуть, когда должны использоваться все три пространства имен.

В качестве альтернативы добавлению «ViewModel», using VM = System.ViewModels; допускаеткласс model и view-model с тем же именем, что и в VM.Foo oFoo = new VM.Foo(new Foo());.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...