घुंघराले ब्रेस सूप से निपटना


11

मैंने वर्षों से C # और VB.NET दोनों में प्रोग्राम किया है, लेकिन मुख्य रूप से VB में। मैं C # की ओर करियर शिफ्ट कर रहा हूं और कुल मिलाकर, मुझे C # बेहतर पसंद है।

एक मुद्दा, मैं कर रहा हूँ, हालांकि, घुंघराले ब्रेस सूप है। VB में, प्रत्येक संरचना कीवर्ड में एक मिलान करीबी कीवर्ड होता है, उदाहरण के लिए:

Namespace ...
    Class ...
        Function ...
            For ...
                Using ...
                    If ...
                        ...
                    End If
                    If ...
                        ...
                    End If
                End Using
            Next
        End Function
    End Class
End Namespace

C # में लिखा गया समान कोड पढ़ने में बहुत कठिन है:

namespace ... {
    class ... {
        function ... {
            for ... {
                using ... {
                    if ... {
                        ...
                    }
                    if ... {
                        ...
                    }
                }
            }
            // wait... what level is this?
        }
    }
}

VB के लिए उपयोग होने के कारण, मुझे आश्चर्य हो रहा है कि क्या पठनीयता में सुधार करने और यह सुनिश्चित करने के लिए कि आपका कोड सही "ब्लॉक" में है, सी-स्टाइल प्रोग्रामर द्वारा नियोजित तकनीक है। उपरोक्त उदाहरण पढ़ने में अपेक्षाकृत आसान है, लेकिन कभी-कभी कोड के एक टुकड़े के अंत में मेरे पास घुंघराले ब्रेसिज़ के 8 या अधिक स्तर होंगे, जिससे मुझे यह पता लगाने के लिए कई पन्नों को स्क्रॉल करने की आवश्यकता होती है कि कौन सा ब्रेस खत्म होता है जो मुझे दिलचस्पी है में।


83
मुझे पता है कि यह उपदेशात्मक लग सकता है, और शायद आपके पास विशेष परिस्थितियां हैं जिनकी आवश्यकता है (क्योंकि हाँ, कभी-कभी यह आवश्यक है - शुक्र है कि ऐसे समय दुर्लभ होने चाहिए), लेकिन आमतौर पर "... 8 या अधिक स्तर घुंघराले ब्रेसिज़, मुझे स्क्रॉल करने की आवश्यकता होती है यह पता लगाने के लिए कि कौन सा ब्रेस खत्म होता है यह जानने के लिए कई पेज ऊपर हैं " कोड का मतलब है कुछ गंभीर रीफैक्टरिंग और क्लीनअप।
FrustratedWithFormsDesigner

7
एक चीज जो मैंने देखी है, और मैं करने के लिए लिया है, एक घुंघराले ब्रेस के अंत में है, मैं इसके बारे में एक टिप्पणी जोड़ूंगा। कुछ इस तरह // End's using X statement
PiousVenom

14
@FrustratedWithFormsDesigner इस तथ्य के बारे में हाजिर है कि आपका नियंत्रण प्रवाह गड़बड़ है और इसे फिर से बनाने की आवश्यकता है। उस ने कहा, मुझे लगता है कि आप स्कूपिंग की तुलना में घुंघराले ब्रेसिज़ के बारे में अधिक शिकायत कर रहे हैं और मैं कहूंगा कि आपको इसकी आदत डालनी होगी। निश्चित रूप से उपयोग किए जाने वाले सूप की तरह थोड़ी-थोड़ी देर के लिए एक अलग भाषा सीखना, जो निश्चित रूप से सूप की तरह दिखता है, लेकिन अभ्यास के साथ। आपको बस तब तक निबटने और निपटने की ज़रूरत है जब तक कि आपका मस्तिष्क सिंटैक्स को स्वाभाविक रूप से संसाधित करना शुरू नहीं करता, आप वहां पहुंच जाएंगे।
जिमी हॉफ

2
@FrustratedWithFormsDesigner - मुझे COM इंटरॉप स्थिति में COM ऑब्जेक्ट्स की बहुत सफाई करने की आवश्यकता है। मैं इस लेख में सुझाई गई तकनीक का उपयोग कर रहा हूं: jake.ginnivan.net/vsto-com-interop । यह आसानी से दो या तीन परतें बनाता है। जब आप लूप, फंक्शन, क्लास और नेमस्पेस को स्टैक करते हैं तो उसके ऊपर (यदि एक स्टेटमेंट के साथ) आपको आसानी से ब्रेसिज़ की कई लेयर्स मिल जाती हैं।
JDB आज भी

5
@TyrionLannister - और वे कुछ सबसे तेज़ टिप्पणियाँ हो सकती हैं जो सिंक से बाहर जाने के लिए उनके पास हैं ... मुझे लगता है कि अगर मैं ऐसा कुछ करने जा रहा था, तो मैं इसे ऑटो-जनरेट करना पसंद करूँगा (प्रदर्शन में) आईडीई द्वारा केवल समय-समय पर (जारी नहीं)।
क्लॉकवर्क-म्यूजियम

जवाबों:


39

अपने शुरुआती कर्ली ब्रेस को उसी तरह से "एंड" में रखें, जैसे कि यह समाप्त होता है:

namespace ... 
{
    class ... 
    {
        function ... 
        {
            for ... 
            {
                using ... 
                {
                    if ... 
                    {
                        ...
                    }
                    if ... 
                    {
                        ...
                    }
                }
            }
            // It's the `function` level!
        }
    }
}

15
मैं सहमत हूँ। मिस्र के कोष्ठक मुझे सिरदर्द देते हैं।
PiousVenom

8
जब आप उस पर क्लिक करते हैं, तो अधिकांश आईडीई (शायद) एक ब्रेस के साथी को उजागर करते हैं।
स्टुपरयूजर

3
@TyrionLannister: अंत में मुझे उस शैली के लिए एक शब्द देने के लिए धन्यवाद! मेरे पास "गलत संरेखित ब्रेसिज़" के अलावा उनके लिए एक अच्छा नाम नहीं था।
FrustratedWithFormsDesigner

3
@ Cyborgx37: क्या आपके आईडीई में "गोइंग ब्रेस टू गो" फीचर है? आमतौर पर एक मुख्य शॉर्टकट से जुड़ा होता है जो आपके कर्सर को वर्तमान में हाइलाइट किए गए ब्रेस से जोड़ता है।
FrustratedWithFormsDesigner

3
कहना होगा, मैं नहीं देखता कि यह कैसे किसी भी आसान बना देता है। किसी भी तरह से आप केवल ब्रेस के इंडेंट स्तर पर स्क्रीन तक देखते हैं जब तक आप एक कीवर्ड तक नहीं पहुंच जाते। और उन सभी अतिरिक्त पंक्तियों के साथ अब आप आगे देखना चाहते हैं।
Blorgbeard

14
  • आपके आईडीई के आधार पर: अपने कर्सर को खुले / बंद ब्रेस पर रखें और यह उस और संबंधित ब्रेस दोनों को उजागर करेगा।
  • ब्लॉक को संक्षिप्त करें और यह आपको दिखाता है कि यह कहाँ खुलता है / बंद होता है।
  • छोटे कोड ब्लॉक लिखें। गंभीरता से। बाहर की जाँच करें Clean Code, और इस समस्या में फिर कभी नहीं (और अधिक पठनीय / बनाए रखने योग्य कोड है)।

एक नोट, निम्नलिखित मान्य c # सिंटैक्स है जो आपकी विशेष स्थिति में मदद कर सकता है:

using (var type = new MyDisposable1())
using (var type2 = new MyDisposable2())
{
    /* do what you will with type2 and type2 */
}

एकल उजागर चरित्र के लिए शिकार करना, जिसने मुझे इस प्रश्न को पहली जगह में पोस्ट करने के लिए प्रेरित किया।
JDB को अभी भी

2
@ Cyborgx37: इसलिए बिंदु 3. यदि आपका पूरा कोड ब्लॉक स्क्रीन पर फिट बैठता है, तो आपको कभी शिकार नहीं करना है। अधिकांश / सभी कक्षाओं में जो मैं लिखता हूं, ब्रेसिज़ की एकमात्र जोड़ी जो स्क्रीन पर फिट नहीं होती है वे नाम स्थान / वर्ग हैं।
स्टीवन एवर्स

अंक 1 और 2 में आप जो सुझाव देते हैं, वह वही है जो मैं अभी करता हूं ... लेकिन इसके लिए यह आवश्यक है कि मैं उस स्थान को छोड़ दूं जहां मैं कोडिंग कर रहा हूं और अगली पंक्ति लगाने के लिए कोड के अपने दृष्टिकोण में हेरफेर करना शुरू कर दूं। प्वाइंट 3 अच्छी तरह से लिया गया है, लेकिन हमेशा संभव नहीं है, खासकर यदि आपके कोड को usingब्लॉकों की कई परतों की आवश्यकता होती है (देखें jake.ginnivan.net/vsto-com-interop )
JDB अभी भी मोनिका को

@ Cyborgx37: मेरा संपादन देखें।
स्टीवन एवर्स

1
@ Cyborgx37 यदि आप एक ऐसा रंग चुनते हैं, जो बाकी सब चीजों से अलग है (मैंने थोड़ी देर के लिए बैंगनी पृष्ठभूमि और सफेद पाठ का उपयोग किया है, तो IIRC) तो मैचिंग ब्रेस के लिए शिकार करने की कोई आवश्यकता नहीं है - यह व्यावहारिक रूप से आप पर चिल्लाता है " यहाँ हैं ! " "।
बजे एक CVn

5

एक आम सम्मेलन संरचना को इंगित करने के लिए समापन ब्रेस के बाद एक टिप्पणी जोड़ने के लिए है:

if {
   ...
} // end if

while (condition) {
   ...
} // end while

आदि मैं इस सम्मेलन के लिए अपने आप को गर्म नहीं किया है, लेकिन कुछ लोगों को यह मददगार लगता है।


16
मैंने लोगों को ऐसा करते देखा है, और जब वे ब्लॉक की भीख माँगते / बदलते हैं ( whilea for, a , swap to ifstatement) बदल देते हैं, तो वे लगभग बंद टिप्पणियों को अद्यतन करने के लिए याद करते हैं, उन्हें बेकार से भी बदतर बना देते हैं। यह अधिवेशन शायद तभी उपयोगी होगा जब आप मेल- {मिलाप के स्वरूप में हर बार टिप्पणियों को बनाए रखने के लिए खुद को मजबूर कर सकते हैं।
FrustratedWithFormsDesigner

हाँ, मैंने इसमें से कुछ किया है, लेकिन यह बहुत अतिरिक्त काम (और शोर) है। मैं उम्मीद कर रहा था कि कुछ और सीधा होगा।
JDB आज भी

5
टिप्पणियों में केवल यह बताया जाना चाहिए कि कोड क्यों और कैसे नहीं है, दोनों में से कौन सा और कैसे है या टिप्पणियों पर भरोसा करने के लिए दोनों में से किसी एक का मतलब है कोड को पढ़ना मुश्किल है, जो एक संकेत है कि कोड को ठीक किया जाना चाहिए, टिप्पणी नहीं की जानी चाहिए।
जिमी होफा नो

1
इससे मुझे आश्चर्य होता है कि किसी ने एक संपादक को क्यों नहीं लिखा है जो इन टिप्पणियों को प्रदर्शित करता है, लेकिन वास्तव में उन्हें कोड में शामिल नहीं करता है ..
ब्रेंडन लांग

2
@ जिमीहॉफ: मुझे लगता है कि टिप्पणियों के लिए एक बेहतर नियम यह है कि उन्हें स्पष्टता प्रदान करनी चाहिए । आमतौर पर इसका मतलब है कि "क्यों" का जवाब देना, लेकिन इसका मतलब अन्य चीजों से भी हो सकता है। हठधर्मिता में इतना मत फंसो कि यह आपको उन चीजों को करने से रोकता है जो वास्तव में मदद करती हैं, जैसे कि कभी-कभी एक समापन ब्रेस के लिए एक टिप्पणी जोड़ना जो अभी तक अपने शुरुआती ब्रेस से हटा दिया गया है।
ब्रायन ओकले

5

सामान्य तौर पर, जब भी किसी भी शैली में ब्रेसिज़ का मिलान करना मुश्किल हो जाता है - इसका मतलब है कि विधि बहुत लंबी है और इसे फिर से फैक्टर किया जाना चाहिए।


5

मुझे लगता है कि आपको ब्रेसिज़ के साथ इसे कठिन बनाने की आवश्यकता है। अंततः वे आपके लिए दूसरी प्रकृति बन जाएंगे और आप सोच रहे होंगे कि आप उनके बिना कभी कैसे रहे।

सुनिश्चित करें कि वे उचित रूप से इंडेंट किए गए हैं, और यह कि कुछ रिक्ति सम्मेलन का पालन किया जा रहा है (जो कोई फर्क नहीं पड़ता)।


एक साल बाद, और यह सलाह सही साबित होती है। :)
JDB अभी भी मोनिका

4

मैं नेमस्पेस और क्लास स्कोप को क्षैतिज रूप से ढंक कर नेस्टिंग के 2 स्तरों को हटाता हूं। ध्यान दें कि विधियाँ स्क्रीन के बाएं किनारे से फ्लश होती हैं। मुझे हर फ़ाइल में इंडेंटेशन के 2 स्तरों को खोने की बात नहीं दिखती।

इसके बाद यह दुर्लभ है कि आपके पास कभी भी 4 से अधिक स्तर गहरे घोंसले होंगे।

namespace FooNameSpace {
class Foo {

public void bar()
{
    while(true)
    {
        while(true)
        {
            break;
        }
    }
}

public void fooBar()
{
    foreach(var item in FooList)
    {
        foreach(var b in item.Bars)
        {
            if(b.IsReady)
            {
                bar();
            }
            bar();
        }
        bar();
    }
}

}}//end class, namespace

मुझे यह विचार पसंद है, लेकिन विज़ुअल स्टूडियो इसे समर्थन नहीं करता है (कम से कम, 2008। हम वर्ष के अंत तक 2012 में अपग्रेड कर रहे हैं, इसलिए यहां उम्मीद है)
JDB अभी भी मोनिका

@ Cyborgx37। मैं पाठ को VIM में बाह्य रूप से संपादित करता हूं, इसलिए यह कोई समस्या नहीं है। लेकिन विजुअल स्टूडियो में: कंट्रोल + ए, फिर "इंडेंट कम" बटन दबाएं। केवल नई फ़ाइलों के लिए करते हैं। मौजूदा फ़ाइलों के साथ परेशान न करें क्योंकि यह स्रोत नियंत्रण में अंतर-तुलना को गड़बड़ कर देगा।
मिकी 30

समापन कोष्ठक / ब्रेसिज़ में टाइप करने से वीएस द्वारा एक ऑटो प्रारूप शुरू होता है, लेकिन आप इसके सुझाव को अस्वीकार करने के लिए हमेशा CTRL + z मार सकते हैं।
एलेक्स पेरिस में

1

मैंने हाल ही में प्रवाह नियंत्रण निर्माणों के बारे में दो नियमों को आज़माने और औपचारिक बनाने का फैसला किया है जो मूल रूप से इस तरह से चलते हैं:

  • आपके पास जरूरी कोड-फ्लो के अलावा कुछ नहीं होना चाहिए
  • आपको कोड-फ्लो का निर्माण यथासंभव छोटा करना चाहिए

वास्तव में जिन कारणों का आपने उल्लेख किया है और जिनके बारे में आप स्पष्ट रूप से जानते हैं, मुझे लगता है कि इन महान नियमों का पालन करना चाहिए। कुछ सरल तकनीकें हैं जिन्हें आप उन्हें पूरा करने के लिए नियोजित कर सकते हैं:

  • जितनी जल्दी हो सके दायरे से बाहर निकलें (इसमें लूप के साथ-साथ कार्य भी शामिल हैं)
  • पूर्ववर्ती से फ़ंक्शन से बाहर निकलने से कम हो सकने वाले योगों के लिए देखें यदि मैंने उल्लेख किया है तो गुंजाइश से बाहर निकलने की तकनीक लागू करें
  • अपनी सशर्त जांचों को उल्टा करें जब एक के अंदर का कोड उस बाहर से महान हो
  • एक लूप के अंदर फैक्टर कोड दूसरी विधि के लिए जब लूप का आकार बाकी विधि को अस्पष्ट करता है
  • किसी भी स्कोप के लिए देखें जिसमें केवल एक और गुंजाइश है, उदाहरण के लिए एक फ़ंक्शन जिसका पूरा दायरा यदि किसी से बाहर कुछ भी नहीं के साथ एक से भरा है

मैंने यहां विस्तृत उदाहरण दिए हैं कि इनका पालन करना आपके साथ कैसे समाप्त हो सकता है जैसा कि आपने कहा और गलत कोड ब्लॉक में कोड डाल दिया, जो खराब है और रखरखाव के दौरान कीड़े का एक आसान कारण है।


धन्यवाद, एक खंड या दो हो सकता है जिसे मैं बाहर निकाल सकता हूं। यह मदद करेगा, लेकिन कई नेस्टेड usingब्लॉक को रिफलेक्टर करना मुश्किल है ।
JDB को अभी भी

@ Cyborgx37 वास्तव में ब्लॉक का उपयोग करते हुए इनबिल्ड हो सकता है यदि वे स्कोप्स को पूरा करने के लिए नेस्टेड हैं, तो यहां देखें stackoverflow.com/questions/1329739/ ... यह मूल रूप से सिंगल लाइन फ्लो कंट्रोल कंस्ट्रक्शन की तरह काम करता है कि आप कैसे (अगर) डीडोमेस्टिंग () कर सकते हैं; यदि आप (सत्य) यदि (कुछ और) यदि (अन्य) तो {doThis () भी कर सकते हैं; वो करें(); कुछ भी करें(); } और अगर आप उम्मीद के अनुसार घोंसला बनाते हैं (भगवान की प्रार्थना के लिए इस तरह का प्रयास करते हैं, तो बस उपयोग के साथ ही ऐसा करें और ELSE हेह के साथ ऐसा न करें)
जिमी हॉफ

हां, मुझे ब्लॉक का उपयोग करने के लिए घोंसले के शिकार के बारे में पता है, लेकिन यह केवल तभी काम करता है जब आपको एक भी लाइन नीचे मिली हो। मेरे अधिकांश कोड में, ऐसा नहीं है। अभी भी एक बहुत ही उपयोगी पोस्ट कुल मिलाकर ... कुछ चीजें सीखी (+1)
JDB अभी भी मोनिका को

@ Cyborgx37 हाँ मुझे लगता है कि स्कोप नेस्टिंग केवल काम करता है f आपके पास अतिरिक्त बिट्स नहीं हैं, कहा कि क्या आपके उपयोग के तरीके के लिए एक पैटर्न है? यदि यह शीर्ष पर है या इसके नीचे है तो निस्तारण में कुछ को अतिरिक्त रूप से स्थानांतरित करना संभव है? अगर यह पैटर्न है; यह अनुमान लगाने के बाद से कि आप इसे एक मुद्दे के रूप में ला सकते हैं, इसलिए आप शायद अपने कोड में अक्सर घोंसले का उपयोग करके इन में चलते हैं।
जिमी हॉफ

मैंने वास्तव में एक फैक्ट्री-पैटर्न कार्यान्वयन पर काम शुरू किया है जो COM ऑब्जेक्ट्स को "ऑटोक्लेनअप" क्लास में लपेटता है। मैं तब usingफैक्ट्री क्लास पर एक स्टेटमेंट का उपयोग करता हूं और जब इसे निपटाया जाता है, तो यह सभी लिपटे हुए क्लासेस को स्वचालित रूप से डिस्पोज कर देता है। यह अब तक अच्छा काम कर रहा है और usingमेरे कोड में बयानों की संख्या में काफी कमी आई है ।
JDB को अभी भी

1

यह दुर्भाग्य से कंप्यूटिंग में युद्ध के सबसे पुराने कारणों में से एक है। दोनों पक्षों से उचित तर्क दिए जा सकते हैं (बेहतर ऊर्ध्वाधर अचल संपत्ति अर्थव्यवस्था बनाम दृष्टिबाधित ब्रेस को बंद कंस के साथ मिलाने की आसान क्षमता), लेकिन वास्तव में एक सरल स्रोत-कोड फ़ॉर्मेटर आपके लिए सब कुछ हल कर देगा। MS Visual C # में एक है जो अच्छी तरह से काम करता है।

हालांकि चेतावनी दी जाती है कि यदि आप एक टीम के हिस्से के रूप में काम कर रहे हैं, तो आपसे उस टीम द्वारा उपयोग किए जाने वाले सम्मेलनों के अनुरूप होने की उम्मीद की जाएगी, इसलिए यह दोनों शैलियों के साथ कुछ परिचितता प्राप्त करने और ब्रेस शैलियों पर धार्मिक होने से परहेज करने के लिए भुगतान करता है।

इसलिए जब आप सभी साधनों से सीख रहे हों, तो उस शैली पर ध्यान केंद्रित करें, जिससे आपको सीखना आसान हो, लेकिन जब आप उस पर हों तो दूसरी नज़र आधी रखें और आप अच्छा करेंगे।


1
मुझे यकीन नहीं है कि अगर यह डिफॉल्ट फॉर्मेटर या रीशर में कुछ है, लेकिन जब मैं सी # का उपयोग करता था तो हमारे पास एक विकल्प होता था जो कोड को चेक-इन के हिस्से के रूप में सुधारित करता था। इस तरह से आप उस कोड को प्रारूपित कर सकते हैं जो आप चाहते थे जबकि आप इसके साथ काम कर रहे थे, लेकिन यह चेक-इन पर "प्रोजेक्ट मानक" में सुधार किया जाएगा। मुझे लगता है कि एकमात्र वास्तविक स्वरूपण मानक हमारे पास टैब के बजाय रिक्त स्थान का उपयोग करने के लिए था।
टीएमएन

1

Resharper का उपयोग करें, जो नेस्टिंग को कम करने के तरीकों की सिफारिश करने में मदद करेगा। इसके अलावा, बॉब मार्टिन की पुस्तक क्लीन कोड को पढ़ें , जो इस बात पर जोर देता है कि एक फ़ंक्शन को केवल एक काम करना चाहिए, और इसलिए प्रत्येक फ़ंक्शन को केवल आधा दर्जन लाइनें लंबी होनी चाहिए, इसलिए आपके पास चिंता करने के लिए कई स्तरों के घोंसले के शिकार नहीं होंगे।


1

संपादक में एक ऐड-ऑन है जो आपकी मदद कर सकता है: C # आउटलाइन

एड-ऑन कोड के नेस्टेड ब्लॉक को ढहाने, विस्तारित करने और हाइलाइट करने की सुविधाओं को जोड़कर C # के लिए VS20xx संपादक का विस्तार करता है। ये सुविधाएँ कोड ब्लॉक की नेस्टेड सामग्री जैसे कि, जबकि, आदि के आसान संपादन और पढ़ने की अनुमति देती हैं।


0

यदि आप विजुअल स्टूडियो में अपना कोड लिखते हैं, तो एक प्लगिन भी है जो आपके द्वारा बनाए गए प्रत्येक संरचना के आरंभ और अंत के बीच ऊर्ध्वाधर डॉट्स दिखाता है।

लेकिन कुल मिलाकर मुझे लगता है कि जब तक आप "घुंघराले-ब्रेस-सूप" का उपयोग करने में कुछ समय लेंगे। (Btw, मैं वास्तव में उस अभिव्यक्ति को पसंद करता हूं। बिग बैंग थ्योरी के एपिसोड-नेम की तरह थोड़ा सा लगता है)


0

इंडेंटेशन आपको बताता है कि आप कहां हैं, वाक्यविन्यास की दोनों शैलियों में। यदि आप एक पंक्ति में या तो VB प्रोग्राम या C # प्रोग्राम लिखते हैं, तो आप जल्द ही यह नहीं बता पाएंगे कि आप नेस्टेड सिंटैक्स में कहां हैं। मशीन ब्लॉक समाप्त होने वाले वाक्यांशों या घुंघराले ब्रेसिज़ को पार्स करती है, लेकिन मनुष्यों को इंडेंटेशन की आवश्यकता होती है।

ब्लॉकिंग वाक्यांश वाक्यांश छिद्रित कार्ड और पेपर टेप के युग से आते हैं, जब प्रोग्रामिंग बहुत कम इंटरैक्टिव और दृश्य थी। या, वास्तव में, बिल्कुल भी इंटरैक्टिव नहीं। कार्यक्रमों में प्रवेश करना मुश्किल था, और इसलिए प्रोग्रामर को सिंटैक्स विश्लेषण और त्रुटि पुनर्प्राप्ति के बारे में बहुत चतुर होने के लिए कंपाइलरों की आवश्यकता थी।

उस बीते युग में, एडिट-कंपाइल-रन साइकिल में कार्ड पंचर के साथ छिद्रित कार्ड तैयार करना शामिल हो सकता है, और फिर एक जॉब सबमिशन विंडो तक अस्तर हो सकता है जहां एक क्लर्क ने छिद्रित कार्ड ले लिया और उन्हें मशीन में जमा किया। बाद में, प्रोग्रामर दूसरी विंडो से आउटपुट (पेपर पर मुद्रित) एकत्र करेगा। यदि प्रोग्राम में त्रुटियां थीं, तो आउटपुट में केवल कंपाइलर डायग्नोस्टिक्स शामिल होंगे। जब टर्नअराउंड समय लंबा होता है, तो end ifइसके बजाय टाइपिंग की अतिरिक्त लागत )उचित है यदि यह डायग्नोस्टिक्स की गुणवत्ता में सुधार करने में मदद करता है, क्योंकि प्रोग्रामर को समय की बर्बादी को कम करने के लिए एकल पुनरावृत्ति में जितनी संभव हो उतनी त्रुटियों को ठीक करना होगा। नौकरी प्रस्तुत विंडो के माध्यम से पुनरावृत्तियों।

जब एक बंद घुंघराले ब्रेस गायब है, तो यह बताना मुश्किल है कि कौन सा खुला ब्रेस है जो बंद नहीं है। (संकलक को शिक्षित अनुमान लगाने के लिए इंडेंटेशन को पार्स करना पड़ सकता है।) यदि आप किसी फ़ंक्शन के अंदर एक समापन ब्रेस को हटाते हैं, तो ऐसा लगता है कि संपूर्ण फ़ाइल उस फ़ंक्शन का हिस्सा है, जिसके परिणामस्वरूप अनहेल्दी त्रुटि संदेशों की झड़ी लग गई है। जबकि यदि आपके पास एक end functionवाक्यविन्यास है, तो संकलक यह निष्कर्ष निकाल सकता है कि गलत कार्य कहां समाप्त होता है, पुनर्प्राप्त करता है, और बाद के कार्यों को ठीक से पार्स करता है, जिससे आपको अतिरिक्त निदान, यदि कोई हो, जो कि सार्थक हैं।

जब आप कोड-जागरूक टेक्स्ट एडिटर में काम कर रहे होते हैं जो स्वचालित रूप से आपके कोड को इंडेंट करता है और रंगीन करता है, तो उच्च रिज़ॉल्यूशन स्क्रीन पर जहाँ आप साठ या अधिक लाइनें देख सकते हैं, उन प्रकार की अनाड़ी भाषाओं के लिए तर्क अब लागू नहीं होते हैं। आप प्रोग्राम को इतनी तेजी से संपादित और पुनर्निर्माण कर सकते हैं कि आप एक बार में एक त्रुटि से निपट सकें। इसके अलावा, स्क्रीन पर कार्यक्रम के बड़े वर्गों को एक साथ देखने और उचित इंडेंटेशन बनाए रखने से, आप पहली बार में उन प्रकार के नेस्टिंग त्रुटियों की घटना को कम कर सकते हैं। और अच्छा प्रोग्रामिंग टेक्स्ट एडिटर आपके टाइप करते ही कुछ प्रकार के सिंटैक्स त्रुटियों को भी चिह्नित करेगा। क्या अधिक है, तह संपादक हैं जो इसकी संरचना के "रूपरेखा जैसा" दृश्य देते हुए, इसके सिंटैक्स के आधार पर एक कार्यक्रम के ब्लॉक को ध्वस्त कर देंगे।

लिस्प ने शुरुआत से ही कोष्ठक का उपयोग किया और शायद, संयोग से नहीं, लिस्प हैकर्स ने प्रोग्रामिंग सिस्टम के रूप में प्रोग्रामिंग का बीड़ा उठाया, जो छोटे-छोटे विखंडों (अभिव्यक्तियों) में कार्यक्रमों को स्वीकार करता था।

वास्तव में, आपको प्रतीकों को समाप्त करने की आवश्यकता नहीं है, जैसा कि पायथन भाषा दर्शाती है। पहचान सिर्फ संरचना हो सकती है। मनुष्य पहले से ही इंडेंटेशन का उपयोग कोड की संरचना को उन भाषाओं में भी करने के लिए करता है जहां मशीन प्रतीकों या वाक्यांशों को समाप्त करने पर निर्भर करती है।


-1

आप एक IDE, बस प्रेस उपयोग कर रहे हैं Crtl+ k+ Dऔर आईडीई काम के बाकी करेंगे।


आईडीई ग्रहण इंडेंटेशन के लिए ctrl-shift-i का उपयोग करता है और स्वरूपण के लिए ctrl-shift-f
शाफ़्ट फ्रीक

दृश्य स्टूडियो में जांच
जग डब्ल्यू डब्ल्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.