Estou trabalhando em um aplicativo ASP.NET MVC e tenho adquirido o hábito de colocar o que parecem ser úteis e convenientes getters em minhas classes de modelo / entidade.
Por exemplo:
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); }
}
}
Eu estou querendo saber as pessoas pensam sobre o FullName
e FormattedPhoneNumber
getters.
Eles facilitam a criação de formatos de dados padronizados em todo o aplicativo e parecem economizar muito código repetido, mas definitivamente pode-se argumentar que o formato dos dados é algo que deve ser tratado no mapeamento de modelo para modelo de exibição.
De fato, originalmente eu estava aplicando esses formatos de dados na camada de serviço em que faço o mapeamento, mas estava se tornando um fardo precisar constantemente escrever formatadores e aplicá-los em muitos lugares diferentes. Por exemplo, eu uso "Nome completo" na maioria das visualizações e ter que digitar algo como em model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
todo o lugar parecia muito menos elegante do que apenas digitar model.FullName = entity.FullName
(ou, se você usar algo como o AutoMapper, provavelmente não digita nada).
Então, onde você desenha a linha quando se trata de formatação de dados. É "bom" fazer a formatação de dados no seu modelo ou é um "cheiro de padrão"?
Nota: eu definitivamente não tenho nenhum html no meu modelo. Eu uso ajudantes html para isso. Estou falando estritamente sobre formatação ou combinação de dados (e especialmente dados usados com freqüência).
PhoneNumber
provavelmente pertence à sua própria classe (que eu implementei agora). Mas FullName
foi realmente o que me motivou a escrever a pergunta. Mas estou interessado em descobrir se, em geral, faz sentido colocar a formatação / penteado de dados etc. no modelo para coisas que serão aplicadas em todo o aplicativo. A partir das respostas abaixo, parece que isso não é um antipadrão, mas a decisão deve ser tomada com cuidado.