स्वाभाविक रूप से गलत या जरूरी नहीं कि नेस्टेड छोरों के बारे में भी कुछ बुरा हो। वे हालांकि कुछ विचार और नुकसान है।
जिन लेखों का आप नेतृत्व कर रहे थे, संभवत: संक्षिप्तता के नाम पर या एक मनोवैज्ञानिक प्रक्रिया के कारण, जिसे ज्वलनशील के रूप में जाना जाता है।
जलाया जाना तब है जब आपके पास कुछ होने का नकारात्मक अनुभव हो, जिसके कारण आप उससे बच रहे हैं। उदाहरण के लिए, मैं तेज चाकू से सब्जियां काट सकता हूं और खुद को काट सकता हूं। फिर मैं कह सकता हूं कि तेज चाकू खराब होते हैं, सब्जियों को काटने के लिए उनका उपयोग न करें ताकि उस बुरे अनुभव के लिए असंभव हो जाए ताकि फिर कभी ऐसा न हो। यह स्पष्ट रूप से बहुत अव्यवहारिक है। वास्तव में आपको बस सावधान रहने की जरूरत है। यदि आप किसी और को सब्जियां काटने के लिए कह रहे हैं, तो आपके पास इससे भी मजबूत समझ है। यदि मैं बच्चों को सब्जियां काटने का निर्देश दे रहा था, तो मैं बहुत दृढ़ता से उन्हें एक तेज चाकू का उपयोग नहीं करने के लिए कहना चाहूंगा, खासकर अगर मैं उन्हें बारीकी से देख नहीं सकता।
प्रोग्रामिंग में समस्या यह है कि यदि आप हमेशा पहले सुरक्षा पसंद करते हैं तो आप शिखर दक्षता को पूरा नहीं करेंगे। इस मामले में बच्चे केवल नरम सब्जियां काट सकते हैं। कुछ और के साथ सामना किया और वे केवल एक कुंद चाकू का उपयोग कर इसे गड़बड़ करने जा रहे हैं। नेस्टेड छोरों सहित छोरों के उचित उपयोग को सीखना महत्वपूर्ण है और आप ऐसा नहीं कर सकते हैं यदि उन्हें बुरा माना जाता है और आप कभी भी उनका उपयोग करने की कोशिश नहीं करते हैं।
कई उत्तरों के रूप में यहां बताया गया है कि लूप के लिए नेस्टेड होना आपके प्रोग्राम की प्रदर्शन विशेषताओं का एक संकेत है जो आपके घोंसले के शिकार के लिए तेजी से खराब हो सकता है। यही है, O (n), O (n ^ 2), O (n ^ 3) और इसी तरह जिसमें O (n ^ गहराई) शामिल है, जहां गहराई यह दर्शाती है कि आपने कितने छोरों को नेस्ट किया है। जैसे-जैसे आपका घोंसला बढ़ता है, समय की आवश्यकता तेजी से बढ़ती है। समस्या यह है कि यह कोई निश्चितता नहीं है कि आपका समय या स्थान जटिलता या तो यह होगा कि (अक्सर एक * बी * सी लेकिन सभी घोंसले छोरों को हर समय नहीं चलाया जा सकता है) और न ही यह निश्चितता है कि आप भले ही वह एक प्रदर्शन समस्या है।
कई लोगों के लिए, विशेष रूप से छात्रों, लेखकों और व्याख्याताओं के लिए, जो फ्रैंक होने के लिए, शायद ही कभी एक जीवित रहने के लिए या दिन के आधार पर लूप्स के लिए कार्यक्रम भी कुछ ऐसा हो सकता है जिसका उपयोग वे नहीं कर रहे हैं और जो शुरुआती मुठभेड़ों पर बहुत अधिक संज्ञानात्मक भार प्रेरित करते हैं। यह एक समस्याजनक पहलू है क्योंकि हमेशा सीखने की अवस्था होती है और इसे अभ्यस्त करने से छात्रों को प्रोग्रामर में परिवर्तित करने में प्रभावी होना चाहिए।
नेस्टेड लूप जंगली जा सकते हैं, कि वे नेस्टेड को बहुत गहराई से समाप्त कर सकते हैं। यदि मैं प्रत्येक महाद्वीप से गुजरता हूं, तो प्रत्येक देश के माध्यम से, फिर प्रत्येक शहर के माध्यम से, फिर प्रत्येक दुकान के माध्यम से, फिर प्रत्येक शेल्फ के माध्यम से, फिर प्रत्येक उत्पाद के माध्यम से यदि प्रत्येक सेम के माध्यम से फलियों की कैन हो सकती है और औसत आकार प्राप्त करने के लिए इसका आकार मापता है तो आप देख सकते हैं कि घोंसला बहुत गहराई से होगा। आपके पास एक पिरामिड और बहुत सी जगह होगी जो बचे हुए मार्जिन से दूर होगी। तुम भी पृष्ठ बंद जा रहा अंत हो सकता है।
यह एक समस्या है जो ऐतिहासिक रूप से अधिक महत्वपूर्ण होगी जहां स्क्रीन छोटे और कम रिज़ॉल्यूशन के थे। उन मामलों में भी घोंसले के कुछ स्तर वास्तव में बहुत सारे स्थान ले सकते हैं। यह आज एक कम चिंता का विषय है जहां थ्रेशोल्ड अधिक है हालांकि यह अभी भी एक समस्या पेश कर सकता है यदि पर्याप्त घोंसले का शिकार हो।
संबंधित सौंदर्यशास्त्र तर्क है। बहुत से लोग इस तरह के अधिक सुसंगत संरेखण के साथ लेआउट के विपरीत लूप्स के लिए सौंदर्यप्रद मनभावन के लिए नेस्टेड नहीं पाते हैं, जो लोगों को आंखों की ट्रैकिंग और अन्य चिंताओं के लिए उपयोग किया जाता है या नहीं जुड़ा जा सकता है। हालांकि यह समस्याग्रस्त है कि यह स्वयं को मजबूत बनाने के लिए जाता है और अंततः कोड को ब्लॉक करने के रूप में पढ़ने के लिए कोड को कठिन बना सकता है और अमूर्तता के पीछे छोरों को इनकैप्सुलेट कर सकता है जैसे कि फ़ंक्शन के प्रवाह को कोड की मैपिंग को तोड़ने पर जोखिम भी।
लोगों के लिए जो उपयोग किया जाता है, उसके प्रति एक स्वाभाविक प्रवृत्ति है। यदि आप सबसे सरल तरीके से कुछ प्रोग्रामिंग कर रहे हैं, तो कोई घोंसले के शिकार की संभावना सबसे अधिक है, एक स्तर की आवश्यकता की संभावना परिमाण के एक आदेश से गिरती है, दूसरे स्तर की संभावना फिर से बंद हो जाती है। आवृत्ति छोड़ने और अनिवार्य रूप से अर्थ है कि कम प्रशिक्षित मानव इंद्रियों के घोंसले के शिकार यह अनुमान लगाने के लिए हैं।
इससे संबंधित यह है कि किसी भी जटिल निर्माण में, जिसे एक नेस्टेड लूप माना जा सकता है, तो आपको हमेशा यह पूछना चाहिए कि कम से कम छोरों की आवश्यकता वाले मिस्ड समाधान के लिए संभावित सबसे सरल समाधान है। विडंबना यह है कि एक नेस्टेड समाधान अक्सर कुछ उत्पन्न करने का सबसे सरल तरीका है जो न्यूनतम मात्रा में प्रयास, जटिलता और संज्ञानात्मक भार के साथ काम करता है। यह अक्सर छोरों के लिए घोंसला बनाने के लिए स्वाभाविक है। यदि आप उदाहरण के लिए ऊपर दिए गए उत्तर में से एक पर विचार करते हैं, जहां लूप के लिए नेस्टेड की तुलना में बहुत तेज़ तरीका भी अधिक जटिल है और इसमें काफी अधिक कोड शामिल हैं।
देखभाल का एक बड़ा सौदा की जरूरत है क्योंकि यह अक्सर छोरों को अमूर्त करने के लिए संभव है या अंतिम परिणाम के साथ उन्हें अभी तक समतल कर देता है अंततः बीमारी से भी बदतर इलाज हो सकता है, खासकर यदि आप उदाहरण के लिए प्रयास से एक औसत दर्जे का और महत्वपूर्ण प्रदर्शन वृद्धि प्राप्त नहीं कर रहे हैं।
यह लोगों के लिए अक्सर लूप में एसोसिएशन की प्रदर्शन समस्याओं का अनुभव करने के लिए बहुत आम है जो कंप्यूटर को कई बार एक कार्रवाई को दोहराने के लिए कह रहे हैं और स्वाभाविक रूप से अक्सर प्रदर्शन बाधाओं में फंस जाएंगे। दुर्भाग्य से इस पर प्रतिक्रियाएँ बहुत सतही हो सकती हैं। लोगों के लिए एक लूप देखना और एक प्रदर्शन समस्या को देखना आम हो जाता है, जहां कोई नहीं होता है और फिर लूप को दृष्टि से छिपाकर कोई वास्तविक प्रभाव नहीं देता है। कोड "तेज" दिखता है, लेकिन इसे सड़क पर रखें, इग्निशन में कुंजी, त्वरक को फर्श करें और स्पीडोमीटर पर एक नज़र डालें और आप पा सकते हैं कि यह अभी भी उतनी ही तेज़ है जितनी कि एक बूढ़ी महिला अपने ज़ेमर फ्रेम पर चल रही है।
इस तरह का छिपाना आपके मार्ग पर दस मगर्स के समान है। यदि आप एक सीधा रास्ता रखने के बजाय जहां आप जाना चाहते हैं तो आप इसे व्यवस्थित करें ताकि हर कोने के पीछे एक मगजर हो जाए, यह भ्रम देता है क्योंकि आप अपनी यात्रा शुरू करते हैं कि कोई मगर्स नहीं हैं। नज़र से ओझल, दिमाग से ओझल। आप अभी भी दस बार मग करने जा रहे हैं, लेकिन अब आप इसे नहीं देखेंगे।
आपके प्रश्न का उत्तर यह है कि यह दोनों है, लेकिन दोनों में कोई चिंता नहीं है। वे या तो पूरी तरह से व्यक्तिपरक हैं या केवल प्रासंगिक उद्देश्य हैं। दुर्भाग्य से कभी-कभी पूरी तरह से व्यक्तिपरक या बल्कि राय मिसाल बन जाती है और हावी हो जाती है।
अंगूठे के एक नियम के रूप में, अगर इसे एक नेस्टेड लूप की आवश्यकता होती है या जो अगले स्पष्ट कदम की तरह लगता है, तो यह जानबूझकर और बस इसे करने के लिए नहीं है। हालाँकि अगर कोई संदेह है तो बाद में इसकी समीक्षा की जानी चाहिए।
अंगूठे का एक और नियम यह है कि आपको हमेशा कार्डिनलिटी की जांच करनी चाहिए और खुद से पूछना चाहिए कि क्या यह लूप एक समस्या है। अपने पिछले उदाहरण में मैं शहरों से गुज़रा। परीक्षण के लिए मैं केवल दस शहरों से गुजर सकता हूं, लेकिन वास्तविक दुनिया के उपयोग के लिए अधिकतम शहरों की उचित संख्या क्या है? मैं तब महाद्वीपों के लिए समान गुणा कर सकता हूं। यह हमेशा अंगूठे का एक नियम है कि विशेष रूप से छोरों के साथ विचार करें कि एक गतिशील (चर) राशि को पुनरावृत्त करें जो कि लाइन के नीचे अनुवाद कर सकता है।
भले ही हमेशा वही करें जो पहले काम करता हो। जिस तरह से आप अनुकूलन के लिए एक अवसर देखते हैं, आपके काम करने के लिए सबसे आसान के खिलाफ अपने अनुकूलित समाधान की तुलना कर सकते हैं और यह पुष्टि करते हैं कि इससे अपेक्षित लाभ मिले। माप में आने से पहले आप बहुत लंबे समय तक अनुकूलन करने में भी खर्च कर सकते हैं और इससे YAGNI या बहुत समय बर्बाद होता है और समय सीमा समाप्त हो जाती है।