java - Solution for Magic Number issue......? -


निम्नलिखित कोड सेगमेंट पर विचार करें ...

  सार्वजनिक स्थिर यूज़रस्टैटस getEnum (int कोड) {स्विच (कोड) {मामला 0: रिटर्न पेनिंग; मामला 1: रिटर्न सक्रिय; मामला 2: वापसी निलंबित; मामला 3: वापस लौटा; मामला 4: वापसी LOGIN_DISABLED; डिफ़ॉल्ट: वापसी शून्य; }}   

अब मामले में नंबर 3 और 4 (केस 3 और केस 4) को सोनार द्वारा जादू संख्या के रूप में देखा जाता है।

इस मुद्दे से बचने के लिए मैंने अपना कोड खंड को निम्न प्रकार से बदल दिया है ...

  सार्वजनिक स्थिर यूज़रस्टैटस getEnum (int कोड) {अंतिम पूर्ण लंबित = 0; अंतिम पूर्णांक सक्रिय = 1; अंतिम आंत निलंबित = 2; अंतिम इंट हटाए गए 3 =; अंतिम इंक Login_details = 4; स्विच (कोड) {मामला लंबित: वापसी लंबित; मामला सक्रिय: रिटर्न सक्रिय; मामला निलंबित: वापसी निलंबित; मामले हटाए गए: वापस लौटा; मामला Login_details: वापसी LOGIN_DISABLED; डिफ़ॉल्ट: वापसी शून्य; }}   

क्या इस तरह के परिदृश्य में जादुई संख्या के मुद्दे को हल करने का यह एक अच्छा तरीका है?

मैं इकट्ठा करता हूं कि आप कोड में पूर्णांक लिटरल्स का इस्तेमाल नहीं करना चाहते हैं। आपका समाधान विशेष रूप से प्रभावी नहीं है क्योंकि यह केवल विधि के शीर्ष पर शाब्दिक चाल करता है यह थोड़ा सा हासिल करता है क्योंकि यह स्थिरांक के लिए अर्थपूर्ण नाम देता है, लेकिन ये नाम विधि के लिए निजी होते हैं।

एक बेहतर दृष्टिकोण एक अंतरफलक में फ़ील्ड के रूप में संख्याओं को परिभाषित करना होगा। फिर आप स्थैतिक रूप से खेतों को आयात कर सकते हैं और उन्हें स्थिरांक के लिए प्रतीकात्मक नाम के रूप में उपयोग कर सकते हैं।

यदि एंमान को एक ही क्रम में स्थिरांक के रूप में घोषित किया जाता है:

  enum UserStatus { लंबित, सक्रिय, निलंबित, हटाया गया, LOGIN_DISABLED} आप एक और चाल कर सकते हैं:  
  सार्वजनिक स्थिर यूज़रस्टैटस getEnum (int कोड) {UserStatus [] मान = UserStatus.values ​​(); वापसी (कोड & gt; = 0 & amp; amp; कोड & lt; values.length)? मान [कोड]: शून्य; }   

हालांकि, यह निरंतर मानों और enum की घोषणा के बीच एक संबंध बनाता है। getEnum के कॉल में वास्तविक पैरामीटर मान कैसे उत्पन्न होते हैं, यह ठीक है,

Comments

Popular posts from this blog

php - How to filter values fetched from database on the basic of comma included? -

c# - Add Image in a stackpanel based on textbox input -

excel vba - How to delete Solver(SOLVER.XLAM) code -