Я создаю приложение 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 требуется несколько дополнительных свойств, помимо того, что есть в модели домена Address, как я должен это назвать? Я считал AddressViewModel так:
public class PersonViewModel
{
public int PersonID { get; set; }
public AddressViewModel Address { get; set; }
public string SomeOtherProperty { get; set; }
}
но мне это просто не нравится. Мое чутье подсказывает, что суффикс ViewModel должен быть только для ViewModel верхнего уровня.
Я ищу предложения от других разработчиков о том, какие соглашения об именах они используют в этом сценарии, в частности, как бы вы назвали дочерний объект в этом случае?
personViewModel.Address
. Если мой первый комментарий был полезен, я поставлю его в качестве ответа, если вы согласны. - person Hugo Hilário   schedule 16.09.2013AddressExt
. Я не использую ViewModels внутри ViewModels. Так что внутри ViewModel у меня будет AddressExt. - person Hugo Hilário   schedule 16.09.2013