मैं एक 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
(या, यदि आप ऑटोमैपर जैसी किसी चीज का उपयोग करते हैं, तो संभवतः कुछ भी टाइप नहीं कर रहे हैं)।
तो, डेटा स्वरूपण की बात करते समय आप कहां रेखा खींचते हैं। क्या आपके मॉडल में डेटा स्वरूपण करना "ठीक है" या "पैटर्न गंध" है?
नोट: मेरे मॉडल में निश्चित रूप से कोई html नहीं है। मैं उसके लिए html हेल्पर्स का उपयोग करता हूं। मैं सख्ती से स्वरूपण या डेटा के संयोजन (और विशेष रूप से अक्सर उपयोग किए जाने वाले डेटा) के बारे में बात कर रहा हूं।
PhoneNumber
शायद इसकी अपनी कक्षा में है (जो मैंने अब लागू किया है)। लेकिन FullName
क्या वास्तव में वह था जिसने मुझे प्रश्न लिखने के लिए प्रेरित किया। लेकिन मुझे यह पता लगाने में दिलचस्पी है कि क्या सामान्य तौर पर, यह उन चीजों के लिए मॉडल में डेटा स्वरूपण / कंघी, आदि लगाने के लिए समझ में आता है जो ऐप-वाइड लागू करेंगे। नीचे दिए गए जवाबों से, ऐसा लगता है कि यह एक विरोधी पैटर्न नहीं है, लेकिन निर्णय सावधानी से किया जाना चाहिए।