मेरी चर्चा के लिए एक बूल में 2 राज्य, सही या गलत हो सकते हैं। प्रोग्रामिंग लैंगुगी विनिर्देश के लिए कुछ भी गैर-अनुरूपता नहीं है। यदि आपकी उपकरण श्रृंखला इसके विनिर्देशन के अनुरूप नहीं है, तो आपको कोई फर्क नहीं पड़ता कि आप क्या करते हैं। यदि एक डेवलपर ने एक प्रकार का बूल बनाया है जिसमें 2 से अधिक राज्य थे, तो यह आखिरी चीज है जो वह कभी भी मेरे कोडबेस पर करेगा।
विकल्प ए।
if (var == true) {
...
} else if (var == false) {
...
} else {
...
}
विकल्प बी
if (var == true) {
...
} else {
...
}
मैं जोर देता हूं विकल्प B अधिक मजबूत है .....
कोई भी ट्विट आपको अनपेक्षित त्रुटियों को संभालने के लिए कह सकता है। जब आप उनके बारे में सोचते हैं तो वे आमतौर पर पता लगाने में आसान होते हैं। आपके प्रोफेसर ने जो उदाहरण दिया है, वह कुछ ऐसा नहीं है जो हो सकता है, इसलिए यह बहुत खराब उदाहरण है।
ए का परीक्षण बिना दृढ़ परीक्षण के दोहन के लिए असंभव है। यदि आप इसे नहीं बना सकते हैं, तो आप इसे कैसे परखेंगे? यदि आपने कोड का परीक्षण नहीं किया है, तो आप कैसे जानते हैं कि यह काम करता है? यदि आप नहीं जानते कि यह काम करता है, तो आप मजबूत सॉफ्टवेयर नहीं लिख रहे हैं। मुझे लगता है कि वे अभी भी कहते हैं कि एक कैच 22 (महान फिल्म, इसे कभी-कभी देखें)।
विकल्प बी परीक्षण के लिए तुच्छ है।
अगली समस्या, आप प्रोफेसर से यह प्रश्न पूछें "क्या आप चाहते हैं कि मैं इसके बारे में ऐसा करूं यदि एक बूलियन न तो सच्चा है और न ही गलत है?" यह एक बहुत ही दिलचस्प चर्चा में नेतृत्व करना चाहिए .....
ज्यादातर मामलों में, एक कोर डंप आशंकित होता है, कम से कम यह उपयोगकर्ता को परेशान करता है या बहुत सारे पैसे खर्च करता है। क्या होगा अगर, कहते हैं, मॉड्यूल स्पेस शटल रीयलटाइम गणना प्रणाली है? कोई भी उत्तर, चाहे कितना भी गलत हो, गर्भपात से भी बदतर नहीं हो सकता है, जो उपयोगकर्ताओं को मार देगा। तो क्या करें, अगर आपको पता है कि उत्तर गलत हो सकता है, तो 50/50 पर जाएं, या गर्भपात करें और 100% विफलता के लिए जाएं। अगर मैं एक क्रू मेंबर होता, तो मैं 50/50 लेता।
विकल्प ए मुझे मारता है विकल्प बी मुझे जीवित रहने का एक भी मौका देता है।
लेकिन रुको - यह स्पेस शटल रीवेंट्री का एक सिमुलेशन है - फिर क्या? गर्भपात तो आप इसके बारे में जानते हैं। एक अच्छे विचार की तरह लग रहा है? - नहीं - क्योंकि आपको उस कोड के साथ परीक्षण करने की आवश्यकता है जिसे आप जहाज करने की योजना बनाते हैं।
विकल्प ए अनुकरण के लिए बेहतर है, लेकिन इसे तैनात नहीं किया जा सकता है। यह बेकार है ऑप्शन बी परिनियोजित कोड है इसलिए सिमुलेशन लाइव सिस्टम के समान कार्य करता है।
मान लीजिए कि यह एक वैध चिंता थी। बेहतर तरीका यह होगा कि एप्लिकेशन लॉजिक से निपटने में त्रुटि को अलग किया जाए।
if (var != true || var != false) {
errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
....
} else {
....
}
फ्यूचर पढ़ना - थेरैक -25 एक्सरे मशीन, एरियन 5 रॉकेट विफलता और अन्य (लिंक में कई टूटे हुए लिंक हैं लेकिन पर्याप्त जानकारी है कि Google मदद करेगा)