Соглашение об именах дочерних объектов ViewModel
Я строю ASP.Net приложение MVC, использующее подход ViewModel, чтобы держать мои доменные сущности отдельно от" моделей", используемых моим пользовательским интерфейсом. Я использую следующее Соглашение для именования моих классов ViewModel. ViewModelName = ViewName + "ViewModel". Например:
Index + ViewModel = IndexViewModel
до сих пор, так хорошо, это довольно распространенный шаблон, и есть много указаний по этой теме на StackOverflow и в других местах. Мой вопрос касается дочерних объектов, используемых моими ViewModels. Если моя ViewModel требуется класс со свойствами, идентичными моему объекту модели домена, я просто включаю модель домена в свою ViewModel. Например:
public class PersonViewModel
{
public int PersonID { get; set; }
public Address Address { get; set; }
public string SomeOtherProperty { get; set; }
}
однако я не уверен, какое соглашение об именах использовать, когда мне нужен дочерний объект с разными свойствами из моей модели домена. Например, если Address нуждался в нескольких дополнительных свойствах, помимо того, что есть в модели домена адресов, как мне его называть? Я рассматривал AddressViewModel так:
public class PersonViewModel
{
public int PersonID { get; set; }
public AddressViewModel Address { get; set; }
public string SomeOtherProperty { get; set; }
}
но это просто мне кажется, что это неправильно. Мой инстинкт подсказывает, что суффикс ViewModel должен быть только для ViewModel верхнего уровня.
Я ищу предложения от других разработчиков о том, какие соглашения об именах они используют в этом сценарии, в частности, что бы вы назвали дочерним объектом в этом случае?
1 ответов
Я собираюсь поставить ответ на это только потому, что никто другой не имеет! (Я знаю, что немного опоздала на эту вечеринку!)
Я обдумал это много раз и пробовал разные конвенций на протяжении многих лет. Единственное, что я понял, это то, что вы используете соглашение об именах...
Если ваше соглашение об именах должно суффиксировать ваши классы моделей пользовательского интерфейса с помощью "ViewModel", то дочерние модели должны иметь тот же суффикс, иначе вы нарушаете свой собственный съезд!
также допустим, у вас есть и адрес таблицы (или что там у вас) и клиент может иметь адрес и компанию и адрес и они оба используют ту же таблицу, то вы многие используют тот же ребенок модель как для родителя, так модели. Просто кажется правильным иметь AddressViewModel
, однажды у вас может быть вид / частичный вид, который является моделью IEnumerable<AddressViewModel>
Я знаю, что на это нет правильного ответа, но это мой ответ: -)