मुझे लगता है कि यह कठिन कोडिंग और सर्वोत्तम प्रथाओं के बारे में एक और सवाल है। मान लें कि मेरे पास मूल्यों की एक सूची है, फल को डेटाबेस में संग्रहीत करने देता है (इसे डेटाबेस में होना चाहिए क्योंकि तालिका का उपयोग अन्य उद्देश्यों जैसे SSRS रिपोर्ट के लिए किया जाता है), एक आईडी के साथ:
1 Apple
2 Banana
3 Grapes
मैं उन्हें उपयोगकर्ता के लिए प्रस्तुत कर सकता हूं, वह एक का चयन करता है, यह उसके प्रोफाइल में FavouriteFruit और डेटाबेस में अपने रिकॉर्ड में संग्रहीत आईडी के रूप में संग्रहीत हो जाता है।
जब व्यावसायिक नियमों / डोमेन लॉजिक की बात आती है, तो विशिष्ट मानों को लॉजिक प्रदान करने के लिए क्या सिफारिशें हैं। यदि उपयोगकर्ता ने अंगूर का चयन किया है तो कहो कि मैं कुछ अतिरिक्त कार्य करना चाहता हूं, अंगूर के मूल्य को संदर्भित करने का सबसे अच्छा तरीका क्या है:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
या कुछ और?
बेशक FavouriteFruit आवेदन भर में इस्तेमाल किया जाएगा, सूची में जोड़ा या संपादित किया जा सकता है।
कोई यह तय कर सकता है कि वे चाहते हैं कि 'अंगूर' का नाम बदलकर 'अंगूर' कर दिया जाए और यह निश्चित रूप से हार्डकोड स्ट्रिंग विकल्प को तोड़ देगा।
हार्डकोड आईडी पूरी तरह से स्पष्ट नहीं है, हालांकि, जैसा कि दिखाया गया है कि आप जल्दी से यह पता लगाने के लिए एक टिप्पणी जोड़ सकते हैं कि यह किस मद में है।
एनुम विकल्प में डेटाबेस से डेटा को डुप्लिकेट करना शामिल है जो गलत लगता है क्योंकि यह सिंक से बाहर निकल सकता है।
वैसे भी, किसी भी टिप्पणी या सुझाव के लिए अग्रिम धन्यवाद।
MyApplication.Grape.ID
हकलाना है, इसलिए बोलना है। एक "Apple" एक "Red_Apple" नहीं है, 3 की ID से भी अधिक 4 भी है। इसलिए "Apple" को "Red_Apple" में बदलने की क्षमता से कोई मतलब नहीं है कि 3 घोषित करने की तुलना में 4 है (और शायद 3 भी)। एक एनुम का बिंदु अपने संख्यात्मक डीएनए को दूर करना है। तो शायद यह वास्तव में मनमाने ढंग से संबंधपरक डीबी कुंजियों को अपघटित करने का समय है जिनका शाब्दिक अर्थ किसी के व्यवसाय मॉडल में नहीं है।