इस सूत्र में, हम goto
C या C ++ के अच्छे उपयोग के उदाहरणों को देखते हैं । यह एक उत्तर से प्रेरित है जिसे लोगों ने वोट दिया क्योंकि उन्हें लगा कि मैं मजाक कर रहा हूं।
सारांश (इरादे को और अधिक स्पष्ट करने के लिए मूल से लेबल बदल गया):
infinite_loop:
// code goes here
goto infinite_loop;
यह विकल्पों से बेहतर क्यों है:
- यह विशिष्ट है।
goto
वह भाषा निर्माण है जो बिना शर्त शाखा का कारण बनता है। अल्टरनेटिव हमेशा-सही स्थिति के साथ, विकल्प सशर्त शाखाओं का समर्थन करने वाली संरचनाओं का उपयोग करने पर निर्भर करते हैं। - लेबल अतिरिक्त टिप्पणियों के बिना इरादे का दस्तावेजीकरण करता है।
- पाठक को शुरुआती
break
एस के लिए हस्तक्षेप कोड को स्कैन करने की आवश्यकता नहीं है (हालांकि यह अभी भी एक अप्रकाशित हैकर के लिएcontinue
जल्दी से अनुकरण करने के लिए संभव हैgoto
)।
नियम:
- प्रोटोपेंड करें कि गोटोफॉब्स को जीत नहीं मिली। यह समझा जाता है कि ऊपर वास्तविक कोड में इस्तेमाल नहीं किया जा सकता क्योंकि यह स्थापित मुहावरों के खिलाफ है।
- मान लें कि हम सभी ने 'गोटो को हानिकारक माना है' के बारे में सुना है और जानते हैं कि गोटो का इस्तेमाल स्पेगेटी कोड लिखने के लिए किया जा सकता है।
- यदि आप एक उदाहरण से असहमत हैं, तो अकेले तकनीकी योग्यता पर इसकी आलोचना करें ('क्योंकि लोगों को गोटो पसंद नहीं है' तकनीकी कारण नहीं है)।
आइए देखें कि क्या हम इस तरह के बड़े होने के बारे में बात कर सकते हैं।
संपादित करें
यह प्रश्न अब समाप्त हो रहा है। इसने कुछ उच्च गुणवत्ता वाले उत्तर उत्पन्न किए। सभी के लिए धन्यवाद, खासकर उन लोगों के लिए जिन्होंने मेरे छोटे लूप उदाहरण को गंभीरता से लिया। ज्यादातर संशयवाद ब्लॉक स्कोप की कमी से चिंतित थे। जैसा कि @quinmars ने एक टिप्पणी में बताया है, आप हमेशा लूप बॉडी के चारों ओर ब्रेसिज़ लगा सकते हैं। मुझे लगता है कि पारित करने में ध्यान दें for(;;)
और while(true)
आप मुफ्त या तो के लिए ब्रेसिज़ देना नहीं है (और उन्हें छोड़ते हुए परेशान कीड़े पैदा कर सकता है)। वैसे भी, मैं इस तिपहिया पर अपने मस्तिष्क की शक्ति का कोई भी अधिक हिस्सा बर्बाद नहीं करूंगा - मैं हानिरहित और मुहावरे के साथ रह सकता हूं for(;;)
और while(true)
(साथ ही अगर मैं अपनी नौकरी रखना चाहता हूं)।
अन्य प्रतिक्रियाओं को ध्यान में रखते हुए, मैं देखता हूं कि बहुत से लोग एक goto
ऐसी चीज को देखते हैं जिसे आपको हमेशा दूसरे तरीके से लिखना पड़ता है। बेशक, आप goto
एक लूप, एक अतिरिक्त ध्वज, नेस्टेड if
एस के ढेर या जो भी हो, को शुरू करने से बच सकते हैं , लेकिन क्यों नहीं माना जाता है कि क्या goto
शायद नौकरी के लिए सबसे अच्छा उपकरण है? एक और तरीका रखो, अपने इच्छित उद्देश्य के लिए एक अंतर्निहित भाषा सुविधा का उपयोग करने से बचने के लिए लोग कितने कुरूपता के लिए तैयार हैं? मेरा मानना है कि झंडा जोड़ने पर भी कीमत चुकानी पड़ती है। मुझे समस्या या समाधान डोमेन में चीजों का प्रतिनिधित्व करने के लिए मेरे चर पसंद हैं। 'पूरी तरह से बचने के लिए goto
' यह कटौती नहीं करता है।
मैं पहले जवाब को स्वीकार करूंगा जिसने सी ब्लॉक को क्लीनअप ब्लॉक करने के लिए पैटर्न दिया था। IMO, यह goto
पोस्ट किए गए सभी उत्तरों में से सबसे मजबूत मामला है, निश्चित रूप से यदि आप इसे गर्भनिरोधकों द्वारा मापते हैं तो एक हैटर को इससे बचने के लिए गुजरना पड़ता है।