जब मैं हाल ही में एक बड़ी कंपनी में काम कर रहा था, मैंने देखा कि वहां के प्रोग्रामर इस कोडिंग शैली का पालन करते हैं:
मान लीजिए मेरे पास एक फ़ंक्शन है जो इनपुट ए, 21 है अगर इनपुट बी, और 45 है तो इनपुट सी।
इसलिए मैं फ़ंक्शन हस्ताक्षर को इस प्रकार लिख सकता हूं:
int foo(String s){
if(s.equals("A")) return 12;
else if(s.equals("B")) return 21;
else if(s.equals("C")) return 45;
else throw new RuntimeException("Invalid input to function foo");
}
लेकिन कोड समीक्षा पर मुझे फ़ंक्शन को निम्नलिखित में बदलने के लिए कहा गया था:
int foo(String s){
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 12);
map.put("B", 21);
map.put("C", 45);
return map.get(s);
}
मैं खुद को नहीं समझा सकता कि दूसरा कोड पहले से बेहतर क्यों है। दूसरा कोड चलने में निश्चित रूप से अधिक समय लगेगा।
दूसरे कोड का उपयोग करने का एकमात्र कारण यह हो सकता है कि यह बेहतर पठनीयता प्रदान करता है। लेकिन अगर फ़ंक्शन को कई बार कॉल किया जा रहा है, तो क्या दूसरा फ़ंक्शन उपयोगिता के चलने के समय को धीमा नहीं करेगा?
आप इस बारे में क्या सोचते हैं?
switch
तुलना में अधिक उपयुक्त लगता हैif-else
)। लेकिन कुछ बिंदु पर, यह समस्याग्रस्त हो जाता है। मैप का उपयोग करने का मुख्य लाभ यह है कि आप इसे फाइल या टेबल आदि से लोड कर सकते हैं। यदि आप मैप पर इनपुट को हार्ड-कोड कर रहे हैं, तो मुझे एक स्विच पर बहुत अधिक मूल्य नहीं दिखाई दे रहा है।