वहाँ पर एक चर्चा comp.lang.c ++ पर चल रही है। इस बारे में संचालित किया गया है कि क्या या नहीं, जो C ++ में केवल डिबग डिफ़ॉल्ट रूप से मौजूद है, उन्हें उत्पादन कोड में रखा जाना चाहिए या नहीं।
जाहिर है, प्रत्येक परियोजना अद्वितीय है, इसलिए मेरा सवाल यहां इतना नहीं है कि क्या जोर दिया जाना चाहिए, लेकिन किन मामलों में यह एक अच्छा विचार नहीं है।
जोर से, मेरा मतलब है:
- एक रन-टाइम चेक जो एक स्थिति का परीक्षण करता है, जो झूठे होने पर सॉफ्टवेयर में बग का पता चलता है।
- एक तंत्र जिसके द्वारा कार्यक्रम को रोक दिया जाता है (हो सकता है वास्तव में कम से कम सफाई के बाद काम)।
मैं जरूरी नहीं कि C या C ++ की बात कर रहा हूं।
मेरी अपनी राय है कि यदि आप प्रोग्रामर हैं, लेकिन डेटा का मालिक नहीं हैं (जो कि अधिकांश वाणिज्यिक डेस्कटॉप अनुप्रयोगों के साथ मामला है), तो आपको उन्हें चालू रखना चाहिए, क्योंकि एक असफल शोध एक बग दिखाता है, और आपको नहीं जाना चाहिए बग के साथ, उपयोगकर्ता के डेटा को दूषित करने के जोखिम के साथ। यह आपको जहाज से पहले दृढ़ता से परीक्षण करने के लिए मजबूर करता है, और कीड़े को अधिक दृश्यमान बनाता है, इस प्रकार स्पॉट करना और ठीक करना आसान होता है।
आपकी क्या राय / अनुभव है?
चीयर्स,
कार्ल
संबंधित प्रश्न यहां देखें
जवाब और अपडेट
हे ग्राहम,
एक जोर त्रुटि, शुद्ध और सरल है और इसलिए एक की तरह संभाला जाना चाहिए। चूंकि एक त्रुटि को रिलीज़ मोड में संभाला जाना चाहिए तो आपको वास्तव में अभिकथन की आवश्यकता नहीं है।
यही कारण है कि जब मैं मुखरता के बारे में बात करता हूं तो "बग" शब्द पसंद करता हूं। यह चीजों को बहुत स्पष्ट करता है। मेरे लिए, "त्रुटि" शब्द बहुत अस्पष्ट है। एक लापता फ़ाइल एक त्रुटि है, बग नहीं है और कार्यक्रम को इससे निपटना चाहिए। एक अशक्त सूचक को हटाने की कोशिश करना एक बग है, और कार्यक्रम को यह स्वीकार करना चाहिए कि कुछ खराब चीज की तरह बदबू आ रही है।
इसलिए, आपको एक जोर के साथ सूचक का परीक्षण करना चाहिए, लेकिन सामान्य त्रुटि-हैंडलिंग कोड के साथ फ़ाइल की उपस्थिति।
थोड़ा ऑफ-टॉपिक, लेकिन चर्चा में एक महत्वपूर्ण बिंदु।
हेड-अप के रूप में, यदि आपके दावे विफल होने पर डिबगर में टूट जाते हैं, तो क्यों नहीं। लेकिन बहुत सारे कारण हैं कि एक फ़ाइल मौजूद नहीं हो सकती है जो आपके कोड के नियंत्रण से पूरी तरह से बाहर हैं: पढ़ने / लिखने के अधिकार, डिस्क पूर्ण, USB डिवाइस अनप्लग्ड, आदि। चूंकि आपके पास इस पर नियंत्रण नहीं है, इसलिए मुझे लगता है कि दावे हैं उससे निपटने का सही तरीका नहीं।
कार्ल
थॉमस,
हां, मेरे पास कोड पूरा है, और मुझे कहना होगा कि मैं उस विशेष सलाह से पूरी तरह असहमत हूं।
अपने कस्टम मेमोरी एलोकेटर को शिकंजा कहें, और मेमोरी का एक हिस्सा ज़ीरो करता है जो अभी भी किसी अन्य ऑब्जेक्ट द्वारा उपयोग किया जाता है। मैं एक पॉइंटर को शून्य करने के लिए होता है जो यह ऑब्जेक्ट नियमित रूप से dereferences करता है, और इनवेरिएंट्स में से एक यह है कि यह पॉइंटर कभी भी अशक्त नहीं है, और आपके पास यह सुनिश्चित करने के लिए कुछ दावे हैं। यदि सूचक अचानक शून्य है तो आप क्या करते हैं। आप बस अगर () इसके चारों ओर, उम्मीद है कि यह काम करता है?
याद रखें, हम यहां उत्पाद कोड के बारे में बात कर रहे हैं, इसलिए डिबगर में कोई तोड़ नहीं है और स्थानीय राज्य का निरीक्षण कर रहा है। यह उपयोगकर्ता की मशीन पर एक वास्तविक बग है।
कार्ल