Estoy trabajando en una aplicación ASP.NET MVC, y me he acostumbrado a poner lo que parecen útiles y convenientes captadores en mis clases de modelo / entidad.
Por ejemplo:
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); }
}
}
Me pregunto si la gente piensa en los FullNamey los FormattedPhoneNumbercaptadores.
Facilitan la creación de formatos de datos estandarizados en toda la aplicación, y parecen guardar una gran cantidad de código repetido, pero definitivamente se podría argumentar que el formato de datos es algo que debe manejarse en el mapeo de modelo a modelo de vista.
De hecho, originalmente estaba aplicando estos formatos de datos en mi capa de servicio donde hago mi mapeo, pero se estaba volviendo una carga tener que escribir constantemente formateadores y luego aplicarlos en muchos lugares diferentes. Por ejemplo, utilizo "Nombre completo" en la mayoría de las vistas, y tener que escribir algo parecido en model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);todo el lugar parece mucho menos elegante que simplemente escribir model.FullName = entity.FullName(o, si usa algo como AutoMapper, potencialmente no escribir nada).
Entonces, ¿dónde trazas la línea cuando se trata de formatear datos? ¿Está "bien" formatear los datos en su modelo o es un "olor a patrón"?
Nota: Definitivamente no tengo ningún html en mi modelo. Yo uso html helpers para eso. Estoy hablando estrictamente de formatear o combinar datos (y especialmente datos que se usan con frecuencia).
PhoneNumberprobablemente pertenece a su propia clase (que ahora he implementado). Pero FullNamefue realmente el que me motivó a escribir la pregunta. Pero estoy interesado en averiguar si, en general, tiene sentido incluir el formato / peinado de datos, etc. en el modelo para las cosas que se aplicarán en toda la aplicación. De las respuestas a continuación, parece que esto no es un antipatrón, pero la decisión debe tomarse con cuidado.