Bir ASP.NET MVC uygulaması üzerinde çalışıyorum ve model / varlık sınıflarıma yararlı ve kullanışlı alıcılar gibi görünen şeyleri koyma alışkanlığına giriyorum.
Örneğin:
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); }
}
}
İnsanların meraklıları FullName
ve FormattedPhoneNumber
meraklılarını düşündüklerini merak ediyorum .
Uygulama boyunca standartlaştırılmış veri formatları oluşturmayı çok kolaylaştırıyorlar ve çok sayıda tekrarlanan kod kaydetmiş gibi görünüyorlar, ancak veri formatının modelden görünüm modeline eşlemede ele alınması gereken bir şey olduğu kesinlikle iddia edilebilir.
Aslında, bu veri formatlarını başlangıçta eşlememi yaptığım hizmet katmanımda uyguluyordum, ancak sürekli olarak formatlayıcılar yazmak ve bunları birçok farklı yere uygulamak zorunda kalıyorum. Örneğin, çoğu görünümde "Tam Ad" kullanıyorum ve model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
her yere benzer bir şey yazmak zorunda kalmadan sadece yazmaktan çok daha az zarif görünüyordu model.FullName = entity.FullName
(ya da AutoMapper gibi bir şey kullanırsanız, hiçbir şey yazmıyorsanız).
Peki, veri biçimlendirmesi söz konusu olduğunda çizgiyi nerede çizersiniz. Modelinizde veri biçimlendirmesi yapmak "iyi" mi yoksa bu bir "desen kokusu" mu?
Not: Modelimde kesinlikle html yok. Bunun için html yardımcıları kullanıyorum. Kesinlikle veri biçimlendirme veya birleştirme (ve özellikle sık kullanılan veriler) hakkında konuşuyorum.
PhoneNumber
muhtemelen kendi sınıfına aittir (şimdi uyguladım). Ama FullName
gerçekten soruyu yazmaya motive eden oydu. Ancak, genel olarak, uygulama genelinde uygulanacak şeyler için modele veri biçimlendirme / tarama vb. Koymanın anlamlı olup olmadığını öğrenmekle ilgileniyorum. Aşağıdaki cevaplardan, bu bir anti-desen değil gibi görünüyor, ancak karar dikkatli bir şekilde alınmalıdır.