कोडिंग अभ्यास के संदर्भ में जो उपयोग करना बेहतर है और क्यों?
सरल उत्तर: हमेशा संक्षिप्त सर्किट संस्करणों का उपयोग करें। ऐसा करने का कोई कारण नहीं है। इसके अतिरिक्त, आप अपना कोड स्पष्ट करते हैं क्योंकि आप अपना इरादा व्यक्त करते हैं: तार्किक मूल्यांकन। बिटवाई (लॉजिकल) ऑपरेशंस का उपयोग करने का तात्पर्य यह है कि आप केवल यही चाहते हैं: बिट ऑपरेशंस, तार्किक मूल्यांकन नहीं (भले ही एमएसडीएन उन्हें "तार्किक ऑपरेटरों" भी कहता है, जब बूलियन मानों पर लागू होता है)।
इसके अतिरिक्त, के बाद से शॉर्ट-सर्किट केवल मूल्यांकन करता है क्या का मूल्यांकन की जरूरत है, यह अक्सर तेजी से है, और यह इस तरह के कोड, अर्थात् लिखने के रूप में
bool nullorempty = str == null || str.Length == 0;
(ध्यान दें कि इस विशेष समस्या एक बेहतर कार्य पहले से मौजूद है हल करने के लिए अनुमति देता है string.IsNullOrEmpty
जिसे आपने अपने प्रश्न में भी प्रयोग किया था।) यह कोड बिटवाई लॉजिकल ऑपरेशंस के साथ संभव नहीं होगा क्योंकि str
null
थे, दूसरी अभिव्यक्ति का मूल्यांकन किया जाएगा, जिसके परिणामस्वरूप NullReferenceException
होगा।
संपादित: आप दुष्प्रभाव एक तार्किक संदर्भ में होते देखना चाहते तो अभी भी बिटवाइज़ संचालन का उपयोग नहीं करें। यह बहुत चालाक होने का एक विशिष्ट उदाहरण है। कोड के अगले रखरखाव (या यहां तक कि कुछ हफ्तों के बाद भी) यह देखता है कि यह कोड "हम्म, इस कोड को सशर्त ऑपरेटरों का उपयोग करने के लिए साफ़ किया जा सकता है," इस प्रकार अनजाने में कोड तोड़ दिया। मुझे दया है कि जो भी इस बग को ठीक करने का प्रभारी है।
इसके बजाय, आप पक्ष पर भरोसा करने के लिए है, प्रभाव, उन्हें स्पष्ट करना:
bool hasBuzzed = checkMakeBuzz();
bool isFrobbed = checkMakeFrob();
bool result = hasBuzzed || isFrobbed;
दी, एक के बजाय तीन लाइनों। लेकिन परिणामस्वरूप एक बहुत स्पष्ट कोड।
स्रोत
2008-12-11 21:43:40
यह एक अच्छा जवाब आइए, लेकिन आप "तार्किक" और "तार्किक" के लिए "सशर्त" से "बिटवाइज़" ऑपरेटरों को बदल सकते हैं? यह शब्दावली एमएसडीएन उपयोग करता है। तकनीकी रूप से दोनों "तार्किक" हैं लेकिन दोगुनी संस्करण भी शॉर्ट-सर्किट – Jimmy
"सशर्त-और ऑपरेटर (&&) तार्किक-और इसके बूल ऑपरेंड का प्रदर्शन करता है, लेकिन यदि आवश्यक हो तो केवल दूसरे ऑपरेंड का मूल्यांकन करता है।" "http://msdn.microsoft.com/en-us/library/2a723cdk(VS.71).aspx" – Jimmy
बिल्कुल सही उत्तर। साइड इफेक्ट चर्चा के लिए +1 - रखरखाव के लिए सहमत, हमेशा स्पष्ट हो। 3 एलओएस बनाम रखरखाव दुःस्वप्न, 3 एलओसी हाथ से नीचे जीतता है। –