Я працюю над програмою ASP.NET MVC, і мені стало звично розміщувати те, що здається корисним та зручним для роботи в моїх класах / моделях.
Наприклад:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string FullName
{
get { return FirstName + " " + LastName; }
}
public string FormattedPhoneNumber
{
get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); }
}
}
Мені цікаво, що люди замислюються про FullNameта про них FormattedPhoneNumber.
Вони дуже просто створюють стандартизовані формати даних у всьому додатку, і вони, схоже, економлять багато повторних кодів, але, безумовно, можна стверджувати, що формат даних - це те, що слід обробляти при зіставленні від моделі до моделі перегляду.
Насправді я спочатку застосовував ці формати даних у своєму сервісному шарі, де я робив своє картографування, але це стало тягарем постійно писати формати, а потім застосовувати їх у багатьох різних місцях. Наприклад, я використовую "Повне ім'я" в більшості видах перегляду, і введення чогось подібного в model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);усьому світі видалося набагато менш елегантним, ніж просто вводити текст model.FullName = entity.FullName(або, якщо ви використовуєте щось на зразок AutoMapper, потенційно взагалі нічого не вводити).
Отже, де ви проводите лінію, коли справа стосується форматування даних. Чи "добре" робити форматування даних у вашій моделі чи це "запах візерунка"?
Примітка. У моїй моделі, безумовно, немає жодного html. Я використовую html-помічники для цього. Я строго кажу про форматування або комбінування даних (і особливо даних, які часто використовуються).
PhoneNumberнапевно, належить до власного класу (який я зараз реалізував). Але FullNameнасправді це мене мотивувало написати питання. Але мені цікаво дізнатися, чи взагалі має сенс розміщувати в моделі форматування / розчісування даних тощо для речей, які застосовуватимуться в додатку. З наведених нижче відповідей здається, що це не є антидіаграмою, але рішення слід приймати обережно.