Sto lavorando su un'app ASP.NET MVC e ho preso l'abitudine di inserire quelli che sembrano getter utili e convenienti nelle mie classi di modello / entità.
Per esempio:
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); }
}
}
Mi chiedo che la gente pensi al FullName
e ai FormattedPhoneNumber
getter.
Semplificano la creazione di formati di dati standardizzati in tutta l'app e sembrano salvare un sacco di codice ripetuto, ma si potrebbe sicuramente sostenere che il formato dei dati è qualcosa che dovrebbe essere gestito nella mappatura da modello a modello di vista.
In effetti, stavo originariamente applicando questi formati di dati nel mio livello di servizio in cui eseguo la mia mappatura, ma stava diventando un peso dover costantemente scrivere i formattatori e applicarli in molti luoghi diversi. Ad esempio, utilizzo "Nome completo" nella maggior parte delle visualizzazioni e dover digitare qualcosa di simile in model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
tutto il luogo mi è sembrato molto meno elegante della semplice digitazione model.FullName = entity.FullName
(o, se si utilizza qualcosa come AutoMapper, potenzialmente non si digita affatto).
Quindi, dove si disegna la linea quando si tratta di formattazione dei dati. È "ok" fare la formattazione dei dati nel tuo modello o è un "odore di pattern"?
Nota: sicuramente non ho HTML nel mio modello. Per questo uso gli helper HTML. Sto parlando rigorosamente di formattazione o combinazione di dati (e in particolare i dati utilizzati di frequente).
PhoneNumber
probabilmente appartiene alla sua stessa classe (che ora ho implementato). Ma è FullName
stato davvero quello che mi ha motivato a scrivere la domanda. Ma sono interessato a scoprire se, in generale, ha senso inserire la formattazione / pettinatura dei dati, ecc. Nel modello per cose che verranno applicate a livello di app. Dalle risposte che seguono, sembra che questo non sia un anti-schema, ma la decisione dovrebbe essere presa con cura.