यहाँ एक बहुत ही सरल उदाहरण दिया गया है । यह आवश्यक रूप से एक भाषा-विशिष्ट प्रश्न नहीं है, और मैं पूछता हूं कि आप कई अन्य तरीकों को अनदेखा कर सकते हैं जो फ़ंक्शन लिखे जा सकते हैं, और इसमें परिवर्तन किए जा सकते हैं। । रंग एक अद्वितीय प्रकार का है
string CanLeaveWithoutUmbrella()
{
if(sky.Color.Equals(Color.Blue))
{
return "Yes you can";
}
else
{
return "No you can't";
}
}
बहुत सारे लोग, जिनसे मैं मिला हूं, ReSharper और यह लड़का (जिसकी टिप्पणी ने मुझे याद दिलाया है कि मैं इसे थोड़ी देर के लिए पूछना चाहता हूं) ने else
इसे छोड़ने वाले ब्लॉक को हटाने के लिए कोड को फिर से शुरू करने की सिफारिश की :
(मैं याद नहीं कर सकता कि बहुमत ने क्या कहा है, मैंने यह अन्यथा नहीं पूछा होगा)
string CanLeaveWithoutUmbrella()
{
if(sky.Color.Equals(Color.Blue))
{
return "Yes you can";
}
return "No you can't";
}
प्रश्न: क्या else
ब्लॉक को शामिल नहीं करके जटिलता में वृद्धि हुई है ?
मैं इस धारणा के तहत हूं कि else
अधिक सीधे राज्यों के इरादे हैं, इस तथ्य को बताते हुए कि दोनों ब्लॉकों में कोड सीधे संबंधित है।
इसके अतिरिक्त मुझे लगता है कि मैं तर्क में सूक्ष्म गलतियों को रोक सकता हूं, खासकर संशोधनों के बाद बाद की तारीख में कोड के लिए।
मेरे सरलीकृत उदाहरण की इस भिन्नता को लें (इस तथ्य को अनदेखा करने के or
बाद से ऑपरेटर को अनदेखा करना )
bool CanLeaveWithoutUmbrella()
{
if(sky.Color != Color.Blue)
{
return false;
}
return true;
}
कोई अब if
पहले उदाहरण के बिना एक शर्त के आधार पर एक नया ब्लॉक जोड़ सकता है तुरंत सही पहचानने के बिना पहली शर्त अपनी स्थिति पर एक बाधा डाल रही है।
यदि कोई else
ब्लॉक मौजूद था, तो जिसने भी नई शर्त जोड़ी है, उसे ब्लॉक की सामग्री को स्थानांतरित करने के लिए मजबूर किया जाएगा else
(और अगर किसी तरह वे उस पर चमकते हैं तो आंकड़े दिखाएंगे कि कोड पहुंच योग्य नहीं है, जो कि एक if
दूसरे को विवश करने के मामले में नहीं है ) ।
बेशक अन्य तरीके हैं विशिष्ट उदाहरण को वैसे भी परिभाषित किया जाना चाहिए, ये सभी उस स्थिति को रोकते हैं, लेकिन यह सिर्फ एक उदाहरण है।
मेरे द्वारा दिए गए उदाहरण की लंबाई इस के दृश्य पहलू को तिरछा कर सकती है, इसलिए मान लें कि कोष्ठक तक ले गई जगह बाकी विधि के लिए अपेक्षाकृत महत्वहीन है।
मैं एक ऐसे मामले का उल्लेख करना भूल गया जिसमें मैं एक और ब्लॉक की चूक से सहमत हूं, और एक if
अवरोध का उपयोग करते समय एक अवरोध को लागू करने के लिए है जो सभी निम्नलिखित कोड के लिए तार्किक रूप से संतुष्ट होना चाहिए , जैसे कि एक अशक्त-जांच (या कोई अन्य गार्ड) ।
else
क्लॉज लिखते समय (मेरे स्वाद के लिए) अधिक पठनीय हो सकता है, अप्राकृतिक कोष्ठक से बाहर निकलते समय यह और भी पठनीय होगा। लेकिन मुझे लगता है कि उदाहरण अच्छी तरह से चुना नहीं गया है, क्योंकि ऊपर केस मैं लिखूंगा return sky.Color == Color.Blue
(अगर / नहीं तो) (बूल की तुलना में एक अलग वापसी प्रकार के साथ एक उदाहरण शायद यह स्पष्ट कर देगा।