इंडेंटेशन शैली

कंप्यूटर प्रोग्रामिंग में एक इंडेंटेशन शैली प्रोग्राम संरचना को संप्रेषित करने के लिए कोड के ब्लॉक (प्रोग्रामिंग) के इंडेंटेशन (टाइपसेटिंग) को नियंत्रित करने वाला एक सम्मेलन है। यह लेख मोटे तौर पर फ्री-फॉर्म भाषाओं को संबोधित करता है जैसे सी ([[प्रोग्रामिंग भाषा)]] और इसके वंश लेकिन अधिकांश अन्य प्रोग्रामिंग भाषाओं (विशेष रूप से मध्यम कोष्ठक प्रोग्रामिंग भाषा में) पर लागू हो सकते हैं जहां व्हॉट्सएप वर्ण है अन्यथा नगण्य। इंडेंटेशन शैली प्रोग्रामिंग शैली का केवल एक पहलू है।

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

इस लेख में कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है और मध्यम कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है।

यौगिक कथनो में कोष्ठक स्थान
इंडेंटेशन शैली के बीच मुख्य अंतर यौगिक कथन के धनुकोष्ठक लगाने में निहित है जो अक्सर एक नियंत्रण कथन का अनुसरण करता है (,  ,  ...). नीचे दी गई तालिका इस आलेख में चर्चा की गई बयानों की शैली के लिए इस स्थान को दर्शाती है कार्य घोषणा शैली एक और स्थितिया है। बयानों में कोष्ठक स्थान की शैली कार्य परिभाषा से भिन्न हो सकती है। स्थिरता के लिए प्रत्येक शैली की पसंदीदा इंडेंटेशन गहराई को 4 रिक्त स्थान पर स्थिर रखा गया है।

टैब, रिक्त स्थान और इंडेंटेशन का आकार
टैब के लिए प्रदर्शित चौड़ाई अधिकांश प्रोग्रामिंग संपादकों में मनमाने मूल्यों पर सेट की जा सकती है जिसमें Notepad++ (एमएस-विंडोज), TextEdit (MacOS/X), Emacs (यूनिक्स), vi (यूनिक्स), और नैनो (यूनिक्स) सम्मिलित हैं। इसके अतिरिक्त इन संपादकों को विशिष्ट इंडेंटेशन योजनाओं से मेल खाने के लिए टैब और रिक्त स्थान का मिश्रण उत्पन्न करने या टैब और रिक्त स्थान के बीच परिवर्तित करने के लिए कॉन्फ़िगर किया जा सकता है। यूनिक्स में टैब की चौड़ाई को टर्मिनल पेजर में भी सेट किया जा सकता है जैसे कम (यूनिक्स), और फ़िल्टर द्वारा फ्लाई पर परिवर्तित किया जा सकता है जैसे विस्तृत / अनएक्सपैंड।

यूनिक्स संपादक आठ स्तंभों के अंतराल पर स्थिति निर्धारण टैब के लिए गलत हैं जबकि मैक (कंप्यूटर) और माइक्रोसॉफ़्ट विंडोज़ | एमएस-विंडोज वातावरण चार कॉलमों के लिए गलत हैं। यह अंतर स्रोत कोड मिसलिग्न्मेंट का कारण बनता है जब टैब और रिक्त स्थान को मिलाने वाला इंडेंटेशन एक विन्यास के तहत प्रदर्शित होता है जो लेखक के विन्यास से अलग टैब प्रदर्शित करता है।

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

इंडेंटेशन का आकार प्राय: शैली से स्वतंत्र होता है। 1983 में पास्कल कोड पर किए गए एक प्रयोग में पाया गया कि इंडेंटेशन आकार ने बोधगम्यता को महत्वपूर्ण रूप से प्रभावित किया। 2 और 4 अक्षरों के बीच का इंडेंटेशन आकार इष्टतम साबित हुआ। रूबी (प्रोग्रामिंग भाषा) कई खोल स्क्रिप्ट भाषा और HTML प्रारूपण के कुछ रूपों के लिए दो जगह प्रति इंडेंटेशन लेवल का प्राय: उपयोग किया जाता है।

उपकरण
इंडेंटेशन शैलियों के बीच परिवर्तित करने के लिए कई उपकरण हैं जैसे कई यूनिक्स जैसे प्रचालन तंत्र के साथ सम्मिलित एक प्रोग्राम है।

Emacs में हिटिंग सहित इंडेंटेशन समस्याओं को स्वचालित रूप से ठीक करने के लिए विभिन्न कमांड उपलब्ध हैं किसी दिए गए रेखा पर (गलत विन्यास में)।  कोड के बड़े हिस्से को ठीक से इंडेंट करने के लिए इस्तेमाल किया जा सकता है। मोड के आधार पर Emacs प्रमुख इंडेंटेशन जगह को रिक्त स्थान के बाद उचित संख्या में टैब के साथ बदल सकता है, जिसके परिणामस्वरूप प्रत्येक स्रोत रेखा को इंडेंट करने के लिए वर्णों की न्यूनतम संख्या होती है।

लोचदार टैबस्टॉप एक सारणीकरण शैली है जिसे पाठ संपादक से समर्थन की आवश्यकता होती है जहां ब्लॉक में एक पंक्ति की लंबाई बदलने पर टेक्स्ट के पूरे ब्लॉक को स्वचालित रूप से संरेखित रखा जाता है।

के एंड आर शैली
के एंड आर शैली (कर्निघन और रिची शैली) और हैकर शब्दजाल में बारीकी से संबंधित एक सच्ची कोष्ठक शैली (1TBS के रूप में संक्षिप्त ) प्राय: सी, सी ++, और अन्य मध्यम-कोष्ठक प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं। यह मूल यूनिक्स कर्नेल, ब्रायन कर्निघन और डेनिस रिची में इस्तेमाल की जाने वाली शैली थी। रिची की पुस्तक द मध्यम-कोष्ठक प्रोग्रामिंग भाषा ]] साथ ही कर्निघन और पी. जे. प्लेगर की पुस्तक प्रोग्रामिंग शैली के तत्व के एंड आर का पालन करते समय प्रत्येक कार्य में अगली पंक्ति में उसी इंडेंटेशन स्तर पर उसके शीर्षलेख के रूप में उद्घाटन कोष्ठक होता है, धनुकोष्ठक के भीतर बयान इंडेंट होते हैं और अंत में समापन कोष्ठक कार्य के शीर्षलेख के समान अपनी खुद की एक पंक्ति में इंडेंटेशन स्तर पर होता है।

एक कार्य के अंदर बहु-पंक्ति ब्लॉक हालांकि उनके संबंधित नियंत्रण बयानों के समान रेखा पर उनके उद्घाटन धनुकोष्ठक होते हैं। समापन धनुकोष्ठक स्वयं की एक पंक्ति में रहते हैं जब तक कि एक कीवर्ड द्वारा पीछा नहीं किया जाता  या  इस तरह के गैर-टाइपोग्राफिक संरेखण धनुकोष्ठक को मिस्र के धनुकोष्ठक (या मिस्र के कोष्ठक) के नाम से जाना जाता है जो प्राचीन मिस्र के कुछ काल्पनिक पोज़ में हथियारों के समान हैं।   K&R में सिंगल-रेखा ब्लॉक में धनुकोष्ठक नहीं होते हैं। इंट मेन ( इंट एआरजीसी, चार * एआरजीवी [])

{    ...     जबकि ( एक्स == वाई ) { कुछ ; कुछ और ; अगर ( some_error ) do_सही ; // K&R में सिंगल-स्टेटमेंट ब्लॉक में ब्रेसेस नहीं होते हैं। अन्य जारी_जैसा_सामान्य ; }    अंतिम बात ; ... } सी प्रोग्रामिंग भाषा प्रभाव इस शैली को स्पष्ट रूप से निर्दिष्ट नहीं करता है हालांकि पूरी किताब में इसका लगातार पालन किया जाता है। पुस्तक से धनुकोष्ठक की स्थिति कम महत्वपूर्ण है हालांकि लोग भावुक विश्वास रखते हैं। हमने कई लोकप्रिय शैलियों में से एक को चुना है। एक शैली चुनें जो आपको सूट करे फिर उसका लगातार उपयोग करें।

सी भाषा के पुराने संस्करणों में तर्क प्रकारों को बाद की पंक्ति पर घोषित करने की आवश्यकता होती है (यानी कार्य के शीर्षलेख के ठीक बाद): /* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी स्टाइल */

इंट मेन ( एआरजीसी, एआरजीवी ) इंट एर्गसी ; चार * एआरजीवी []; {    ... }

वैरिएंट: 1TBS (OTBS)
एक सच्ची कोष्ठक शैली (1TBS या OTBS के रूप में संक्षिप्त के एंड आर के समान है। मुख्य दो अंतर यह हैं कि कार्यों में उनके शुरुआती धनुकोष्ठक एक ही रेखा पर एक स्थान से अलग होते हैं और यह कि धनुकोष्ठक को नियंत्रण कथन के लिए छोड़ा नहीं जाता है इसके दायरे में केवल एक कथन होता है।

इस शैली में नए कोड रेखाों के सम्मिलन की अनुमति देने वाले निर्माण अलग-अलग रेखाों पर होते हैं और सम्मिलन को प्रतिबंधित करने वाले निर्माण एक पंक्ति पर होते हैं। इस सिद्धांत को एकल-पंक्ति सशर्त सहित आदि को मजबूत करके बढ़ाया जाता है ताकि कोड की एक नई पंक्ति को कहीं भी सम्मिलित करना हमेशा सुरक्षित रहे (यानी इस तरह के सम्मिलन से निष्पादन का प्रवाह असहमत नहीं होगा)।

इस शैली के सुझाए गए फायदे यह हैं कि शुरुआती कोष्ठक को अकेले अतिरिक्त रेखा की आवश्यकता नहीं होती है और समापन कोष्ठक उस कथन के साथ रेखा ऊपर करता है जो वैचारिक रूप से संबंधित है। इस शैली की एक लागत यह है कि एक ब्लॉक के अंतिम कोष्ठक को अकेले एक पूरी रेखा की आवश्यकता होती है जिसे आंशिक रूप से if/else ब्लॉक और डू/जबकि ब्लॉक में हल किया जा सकता है: शून्य चेकनेगेटिव ( एक्स ) {

अगर ( एक्स < 0 ) { डालता है ( "नकारात्मक" ); } और { अऋणात्मक ( एक्स ) द वन ट्रू कोष्ठक शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।

संस्करण: लिनक्स कर्नेल
K&R शैली का एक लघु संस्करण लिनक्स कर्नेल शैली है जो लिनक्स कर्नेल के स्रोत ट्री में इसके व्यापक उपयोग के लिए जानी जाती है। लिनस टोरवाल्ड्स दृढ़ता से सभी योगदानकर्ताओं को इसका पालन करने की सलाह देते हैं। शैली के एंड आर से कई तत्वों को उधार लेती है।

कर्नेल शैली इंडेंटेशन के लिए टैब का विश्राम स्थान का उपयोग करती है (टैब स्टॉप प्रत्येक 8 वर्ण सेट करता है)। किसी कार्य के मध्यम धनुकोष्ठक को खोलना कार्य  हेडर के बाद रेखा की शुरुआत में जाता है। कोई भी अन्य खुला मध्यम धनुकोष्ठक उसी रेखा पर चलते हैं जिस पर संबंधित कथन एक जगह द्वारा अलग किया जाता है। ए में स्तर  बयान संलग्न ब्लॉक के साथ गठबंधन कर रहे हैं (इंडेंट का केवल एक स्तर है)। रेखा की लंबाई 80 वर्णों तक सीमित हुआ करती थी – इसे 2020 में बढ़ाकर 100 कर दिया गया था लेकिन मूल सीमा को अभी भी पसंद किया जाता है। यौगिक कथन के एकल-विधान शरीर को मध्यम धनुकोष्ठक से घिरा नहीं होना चाहिए। यदि एक में एक या एक से अधिक सब कथन  कथन में धनुकोष्ठक की आवश्यकता होती है तो दोनों सब कथन को मध्यम धनुकोष्ठक के अंदर लपेटा जाना चाहिए: इंट पावर ( इंट एक्स, इंट वाई ) { इंट परिणाम ; अगर ( वाई < 0 ) { परिणाम = 0 ; } और { परिणाम = 1 ; जबकि ( वाई -- > 0 ) परिणाम * = एक्स ; }        वापसी परिणाम ;

संस्करण: अनिवार्य धनुकोष्ठक
कुछ लोग अपने दायरे में केवल एक कथन के साथ नियंत्रण बयानों के लिए अनिवार्य धनुकोष्ठक की वकालत करते हैं यानी सिंगल-रेखा सशर्त समेत जबकि इत्यादि को कोष्ठक करना ताकि कहीं भी कोड की एक नई पंक्ति का सम्मिलन हमेशा सुरक्षित रहे (यानी ऐसा सम्मिलन निष्पादन के प्रवाह को स्रोत-कोड इंडेंटेशन से असहमत नहीं करेगा)।

इस शैली की लागत यह है कि अंतिम ब्लॉक के लिए एक अतिरिक्त पूर्ण रेखा की आवश्यकता होती है (मध्यवर्ती ब्लॉकों को छोड़कर if/else निर्माण करता है)।

संस्करण: जावा
जबकि जावा (प्रोग्रामिंग भाषा) को कभी-कभी अन्य शैलियों में लिखा जाता है जावा कोड का एक महत्वपूर्ण निकाय K&R शैली के एक सामान्य संस्करण का उपयोग करता है जिसमें खुला कोष्ठक एक ही रेखा पर होता है न कि केवल एक कार्य के अंदर ब्लॉक के लिए लेकिन कक्षा या विधि घोषणाओं के लिए भी।

यह शैली काफी हद तक व्यापक है क्योंकि सन सूक्ष्मतंत्र की मूल शैली मार्गदर्शक करती है  इस K&R संस्करण का उपयोग किया और परिणामस्वरूप वर्ग ग्रंथालय के लिए अधिकांश मानक स्रोत कोड इस शैली में लिखे गए हैं। यह ऑलमैन शैली के साथ-साथ ActionScript और JavaScript के लिए भी एक लोकप्रिय इंडेंटेशन शैली है।

संस्करण: स्ट्रॉस्ट्रुप
स्ट्रॉस्ट्रुप शैली बज़्ने स्ट्रॉस्ट्रुप का सी ++ के लिए के एंड आर शैली का अनुकूलन है जैसा कि उनकी पुस्तकों में प्रयोग किया जाता है जैसे कि प्रोग्रामिंग सिद्धांतों और अभ्यास का उपयोग करना सी ++ और सी ++ प्रोग्रामिंग भाषा

ऊपर दिए गए वेरिएंट के विपरीत स्ट्रॉस्ट्रुप एक कडलड एल्स का उपयोग नहीं करता है। इस प्रकार स्ट्राउस्ट्रप लिखेंगे अगर (एक्स <0) { पुट (नकारात्मक); नकारात्मक (एक्स); }   अन्य { पुट (गैर-नकारात्मक); अऋणात्मक (एक्स); } स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है: वर्ग वेक्टर { जनता: वेक्टर (इंट एस): एलेम (नया डबल [एस]), एसजेड (एस) {} // एक वेक्टर का निर्माण डबल और ऑपरेटर [] (इंट आई) {वापसी तत्व [i]; } // एलिमेंट एक्सेस: सबस्क्रिप्टिंग int आकार {वापसी sz; } निजी: डबल * एलिम; // तत्वों के लिए सूचक इंट एसजेड; // तत्वों की संख्या }; स्ट्रॉस्ट्रुप स्तर को इंडेंट नहीं करता है public:और private: इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला कोष्ठक एक नई रेखा पर शुरू होती है एक क्लास की खुला कोष्ठक उसी रेखा पर होती है जिस पर क्लास का नाम होता है।

स्ट्रॉस्ट्रुप छोटे कार्यों को एक पंक्ति में लिखने की अनुमति देता है। स्ट्राउस्ट्रप शैली एक नामांकित इंडेंटेशन शैली है जो संपादक Emacs में उपलब्ध है। स्ट्रॉस्ट्रुप अपने आधुनिक सी++ कोर दिशानिर्देशों में बताए गए अनुसार सी++ के साथ एक के एंड आर-व्युत्पन्न शैली लेआउट को प्रोत्साहित करता है।

वैरिएंट: बीएसडी केएनएफ
कर्नेल सामान्य रूप भी कहा जाता है, यह बर्कले सॉफ्टवेयर वितरण (BSD) प्रचालन तंत्र में उपयोग किए जाने वाले अधिकांश कोड का रूप है। हालांकि ज्यादातर कर्नेल कोड के लिए अभिप्रेत है, यह यूजरलैंड (कंप्यूटिंग) कोड में भी व्यापक रूप से उपयोग किया जाता है। बेल लैब्स संस्करण 6 और 7 यूनिक्स स्रोत कोड में उपयोग किए जाने के रूप में यह अनिवार्य रूप से के एंड आर शैली का एक पूरी तरह से प्रलेखित संस्करण है।

SunOS कर्नेल और यूजरलैंड एक समान इंडेंटेशन शैली का उपयोग करते हैं। केएनएफ की तरह यह भी एटी एंड टी शैली के दस्तावेजों पर आधारित था और इसे कभी-कभी बिल जॉय नॉर्मल फॉर्म भी कहा जाता है। SunOS दिशानिर्देश 1996 में प्रकाशित हुआ था और एएनएसआई सी पर संक्षेप में चर्चा की गई है। स्रोत फ़ाइलों की सूची के इंडेंटेशन की शुद्धता को बिल शैनन द्वारा लिखित cstyle प्रोग्राम द्वारा सत्यापित किया जा सकता है।

इस शैली में कठिन सारणी (ts in vi) को आठ कॉलम में रखा जाता है जबकि एक सॉफ्ट सारणी को अक्सर एक सहायक (sw in vi) के रूप में भी परिभाषित किया जाता है और चार पर सेट किया जाता है। कठिन सारणी का उपयोग कोड ब्लॉक इंडेंट करने के लिए किया जाता है जबकि अतिरिक्त इंडेंटेशन के सॉफ्ट सारणी (चार रिक्त स्थान) का उपयोग उन सभी निरंतर रेखाओ के लिए किया जाता है जिन्हें कई रेखाों में विभाजित किया जाना चाहिए।

इसके अतिरिक्त कार्य कॉल कोष्ठक से पहले एक स्थान का उपयोग नहीं करते हैं हालांकि सी-भाषा मूल कथन जैसे,  ,  ,   और   करें (sthiti में जहां   Parens के साथ प्रयोग किया जाता है)। ऐसे कार्य जो अपने शीर्ष-स्तरीय ब्लॉक में कोई स्थानीय चर घोषित नहीं करते हैं, उनके शुरुआती ब्लॉक कोष्ठक के बाद भी एक खाली रेखा छोड़नी चाहिए।

यहाँ कुछ नमूने देखें: जबकि ( एक्स == वाई ) { कुछ ; कुछ और ; } अंतिम बात ;

अगर (डेटा! = न्यूल एंड& रेस> 0) {

अगर (JS_DefineProperty (सीएक्स, ओ, डेटा, STRING_TO_JSVAL(JS_NewStringCopyN(cx, डेटा, Res)), न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) { QUEUE_EXCEPTION(आंतरिक त्रुटि!); गोटो गलती; }       पीक्यू फ्रीमेम (डेटा); } अन्य अगर (JS_DefineProperty (cx, o, डेटा, OBJECT_TO_JSVAL (NULL), न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) { QUEUE_EXCEPTION(आंतरिक त्रुटि!); गोटो गलती; }

pgresult_constructor ( JSContext * cx, JSObject * obj , uintN argc ,         jsval * argv , jsval * प्रतिद्वंद्वी ) {        QUEUE_EXCEPTION ( "PGresult वर्ग उपयोगकर्ता-तात्कालिक नहीं है" ); वापसी ( JS_FALSE ); }

ऑलमैन शैली
ऑलमैन शैली का नाम एरिक एलमैन के नाम पर रखा गया है। इसे कभी-कभी बीएसडी शैली भी कहा जाता है क्योंकि ऑलमैन ने बर्कले सॉफ्टवेयर वितरण यूनिक्स के लिए कई उपयोगिताओं को लिखा था (हालांकि इसे अलग-अलग बीएसडी केएनएफ शैली के साथ भ्रमित नहीं होना चाहिए; ऊपर देखें)।

यह शैली अगली पंक्ति पर नियंत्रण कथन से जुड़े कोष्ठक को नियंत्रण कथन के समान स्तर पर इंडेंट करती है। कोष्ठकों के भीतर कथनों को अगले स्तर पर इंडेंट किया जाता है। जबकि ( एक्स == वाई ) { कुछ ; कुछ और ; } अंतिम बात यह शैली पास्कल (प्रोग्रामिंग भाषा) भाषाओं और कारोबार-एसक्यूएल द्वारा उपयोग किए जाने वाले मानक इंडेंटेशन के समान है जहां धनुकोष्ठक कीवर्ड के बराबर हैं I  और. (* पास्कल में ऑलमैन कोड इंडेंटेशन स्टाइल का उदाहरण *)

प्रक्रिया dosomething ( x,y :पूर्णांक) ; प्रारंभ करें जबकि x  =  y  कुछ प्रारंभ करें ; कुछ और ; अंत ; इस शैली के परिणाम यह हैं कि इंडेंट कोड स्पष्ट रूप से उन पंक्तियों के द्वारा युक्त कथन से अलग होता है जो लगभग सभी व्हाइट जगह वर्ण होते हैं और समापन कोष्ठक उसी कॉलम में होते हैं जो उद्घाटन कोष्ठक के रूप में होते हैं। कुछ लोगों को लगता है कि इससे मिलान धनुकोष्ठक ढूंढना आसान हो जाता है। अवरुद्ध शैली संबंधित नियंत्रण कथन से कोड के ब्लॉक को भी चित्रित करती है। कंट्रोल कथन या कोड के ब्लॉक या कोड पुनर्रचना पर टिप्पणी करने या हटाने से लटकने या लापता धनुकोष्ठक के माध्यम से वाक्य - विन्यास त्रुटियों को प्रस्तुत करने की संभावना कम होती है। साथ ही यह बाहरी कार्य ब्लॉक के लिए कोष्ठक स्थान के अनुरूप है।

उदाहरण के लिए निम्नलिखित अभी भी वाक्य रचनात्मक रूप से सही है: // जबकि (एक्स == वाई) { कुछ ; कुछ और ; } जैसा यह है:

// के लिए (int i=0; i <x; i++)

// जबकि (एक्स == वाई)

अगर (एक्स == वाई)

{ कुछ; कुछ और; }

इस तरह भी सशर्त संकलन के साथ इंट सी ; #ifdef HAS_GETCH जबकि (( सी = गेटच ) ! = ईओएफ ) जबकि (( सी = getchar ) ! = ईओएफ ) {            do_something ( सी );
 * 1) else
 * 1) endif

वैरिएंट: ऑलमैन-8
शिक्षा में उपयोग के लिए एक लोकप्रिय संस्करण ऑलमैन-8 8-जगह इंडेंटेशन टैब और K&R के लिनक्स कर्नेल वेरिएंट की 80-कॉलम सीमा का उपयोग करता है। शैली कथित तौर पर प्रोजेक्टर पर पठनीयता में सुधार करने में मदद करती है। साथ ही इंडेंटेशन आकार और कॉलम प्रतिबंध कोड ब्लॉक के अत्यधिक नेस्टिंग की पहचान करने के लिए एक दृश्य क्यू बनाने में मदद करता है। ये लाभ नए डेवलपर्स और शिक्षार्थियों को कोड जटिलता को प्रबंधित करने के लिए निहित मार्गदर्शन प्रदान करने में मदद करने के लिए गठबंधन करते हैं।

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

जार्गन फ़ाइल के अनुसार व्हाईटस्मिथ, ऑलमैन शैली के साथ समान लोकप्रियता के साथ सबसे आम कोष्ठकिंग शैली रही है।

यह शैली नियंत्रण कथन से जुड़े कोष्ठक को अगली पंक्ति पर इंडेंट करती है। धनुकोष्ठक के भीतर कथन् को धनुकोष्ठक के समान स्तर पर इंडेंट किया जाता है।

रैटलिफ़ शैली की तरह समापन कोष्ठक को धनुकोष्ठक के भीतर बयानों के समान ही इंडेंट किया जाता है।

जबकि (एक्स == वाई) {   कुछ; कुछ और; }अंतिम बात ;

इस शैली के फायदे ऑलमैन शैली के समान हैं। ब्लॉक स्पष्ट रूप से नियंत्रण बयानों से अलग हैं। ब्लॉक के साथ धनुकोष्ठक का संरेखण इस बात पर जोर देता है कि पूर्ण ब्लॉक संकल्पनात्मक और प्रोग्रामेटिक रूप से एक मिश्रित कथन है। धनुकोष्ठक को इंडेंट करना इस बात पर जोर देता है कि वे कंट्रोल कथन के अधीन हैं। अंतिम कोष्ठक अब कथन के अनुरूप नहीं है बल्कि खुला कोष्ठक के साथ है।

एक उदाहरण: अगर ( डेटा ! = न्यूल एंड & रेस > 0 ) {if ( ! JS_DefineProperty ( cx, o , "data" , STRING_TO_JSVAL ( JS_NewStringCopyN ( cx , data , res )), NULL , NULL , JSPROP_ENUMERATE )) {        QUEUE_EXCEPTION ( "आंतरिक त्रुटि!" ); गोटो गलती ; }    पीक्यूफ्रीमेम ( डेटा ); } और अगर ( ! JS_DefineProperty ( cx, o , "डेटा" , OBJECT_TO_JSVAL ( NULL ), NULL , NULL , JSPROP_ENUMERATE )) {    QUEUE_EXCEPTION ( "आंतरिक त्रुटि!" ); गोटो गलती ; } प्रीप्रोसेसर स्टेटमेंट की तरह स्टेटमेंट के रूप में माना जाता है।

जीएनयू शैली

 * 1) ऑलमैन शैली और व्हाईटस्मिथ्स शैली शैली की तरह जीएनयू शैली एक रेखा पर खुद से धनुकोष्ठक लगाती है, दो जगह द्वारा इंडेंट किया जाता है सिवाए कार्य परिभाषा को जहां वे इंडेंट नहीं होते हैं। किसी भी स्थिति में निहित कोड को धनुकोष्ठक से दो रिक्त स्थान द्वारा इंडेंट किया जाता है।

रिचर्ड स्टालमैन द्वारा लोकप्रिय लेआउट लिस्प (प्रोग्रामिंग भाषा) कोड लिखने की उनकी पृष्ठभूमि से प्रभावित हो सकता है। लिस्प में एक ब्लॉक (एक प्रोग्न) के बराबर एक प्रथम श्रेणी की डेटा इकाई है और इसे अपना इंडेंटेशन स्तर देने से उस पर जोर देने में मदद मिलती है जबकि सी में एक ब्लॉक केवल वाक्य - विन्यास है। यह शैली 1960 और 1970 के दशक की कुछ ALGOL और XPL प्रोग्रामिंग भाषा पाठ्यपुस्तकों में भी पाई जा सकती है।  हालांकि सीधे इंडेंटेशन से संबंधित नहीं है। जीएनयू कोडिंग शैली में कार्य के तर्कों की ब्रैकेटेड सूची से पहले एक स्थान भी सम्मिलित  है। जबकि ( एक्स == वाई ) { कुछ ; कुछ और ; //... अगर ( एक्स < 0 ) { प्रिंटफ ( "नकारात्मक" ); नकारात्मक ( एक्स ); }    अन्य { प्रिंटफ ( "गैर-नकारात्मक" ); अऋणात्मक ( एक्स ); }अंतिम बात यह शैली ऑलमैन शैली और व्हाईटस्मिथ शैली के लाभों को जोड़ती है, जिससे ब्लॉक से बाहर नहीं खड़े होने वाले धनुकोष्ठक के संभावित व्हाइटस्मिथ नुकसान को दूर किया जाता है। एक नुकसान यह है कि अंतिम कोष्ठक अब उस कथन के अनुरूप नहीं है जिससे यह अवधारणात्मक रूप से संबंधित है। एक और संभावित नुकसान यह है कि यह एक वैचारिक स्तर के लिए इंडेंट के दो दृश्य स्तरों का उपयोग करके स्थान को बर्बाद कर सकता है लेकिन वास्तव में यह संभावना नहीं है क्योंकि एकल-स्तरीय इंडेंटेशन वाले तंत्र में प्रत्येक स्तर प्राय: कम से कम 4 रिक्त स्थान होता है जैसा कि 2 * जीएनयू शैली में 2 रिक्त स्थान।

जीएनयू कोडिंग मानक इस शैली की अनुशंसा करते हैं, और जीएनयू परियोजना सॉफ़्टवेयर के लगभग सभी अनुरक्षक इसका उपयोग करते हैं।

जीएनयू Emacs टेक्स्ट एडिटर और जीएनयू तंत्र का इंडेंट (यूनिक्स) कमांड गलत रूप से इस शैली के अनुसार कोड को रिफॉर्मेट करेगा। जो लोग जीएनयू Emacs या समान रूप से एक्स्टेंसिबल/अनुकूलन योग्य संपादकों का उपयोग नहीं करते हैं वे पा सकते हैं कि उनके संपादक की स्वचालित इंडेंटेशन सेटिंग्स इस शैली के लिए अनुपयोगी हैं। हालांकि केएनएफ शैली के लिए डिफॉल्ट करने वाले कई संपादक जीएनयू शैली के साथ अच्छी तरह से सामना करते हैं जब टैब की चौड़ाई दो स्थानों पर सेट होती है। इसी तरह जीएनयू Emacs केवल टैब की चौड़ाई को आठ स्थानों पर सेट करके KNF शैली के अनुकूल हो जाता है। दोनों ही स्थिति में स्वचालित सुधार मूल रिक्ति को नष्ट कर देता है लेकिन स्वचालित रेखा इंडेंटिंग ठीक से काम करेगी।

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

होर्स्टमैन शैली
के एस. होर्स्टमैन द्वारा सह संगणकीय संकल्पना सी++ एसेंशियल्स का 1997 का संस्करण खुला कोष्ठक के समान रेखा पर एक ब्लॉक के पहले कथन को रखकर ऑलमैन शैली को अपनाता है। इस शैली का उपयोग जेन्सेन और विर्थ के पास्कल उपयोगकर्ता पुस्तिका और प्रतिवेदन के उदाहरणों में भी किया जाता है। जबकि (एक्स == वाई)

कुछ और; //...   अगर (एक्स <0) {प्रिंटफ (नकारात्मक); नकारात्मक (एक्स); }   अन्य {प्रिंटफ (गैर-नकारात्मक); अऋणात्मक (एक्स); } अंतिम बात ; यह शैली K&R शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके ऑलमैन शैली के लाभों को जोड़ती है। हालाँकि 2003 का संस्करण अब ऑलमैन शैली का उपयोग करता है।

पिको शैली
यह शैली पिको (प्रोग्रामिंग भाषा) भाषा में इसके डिजाइनरों द्वारा सबसे अधिक उपयोग की जाती है। पिको में वापिस कथन का अभाव है और समापक के बजाय अर्धविराम को कथन विभाजक के रूप में उपयोग करता है। यह इस वाक्यविन्यास को उत्पन्न करता है:

सामान (एन):

{एक्स: 3 * एन; वाई: डू स्टफ (एक्स);

वाई + एक्स}

फायदे और नुकसान के एंड आर शैली के साथ स्क्रीन रियल एस्टेट को बचाने के समान हैं। एक अतिरिक्त लाभ यह है कि प्रारंभिक और समापन धनुकोष्ठक K&R शैली के सापेक्ष अनुप्रयोग में सुसंगत हैं (दोनों कोड की एक पंक्ति के साथ स्थान साझा करते हैं) जहां एक कोष्ठक कोड की एक पंक्ति के साथ स्थान साझा करता है और एक कोष्ठक में केवल एक पंक्ति होती है।

रैटलिफ शैली
प्रोग्रामर एट वर्क पुस्तक में सी. वेन रैटलिफ़ ने नीचे दी गई शैली का उपयोग करते हुए चर्चा की। शैली 1TBS की तरह शुरू होती है लेकिन फिर नेस्टेड ब्लॉक के इंडेंटेशन के साथ समापन कोष्ठक रेखा ऊपर हो जाती है। रैटलिफ़ लोकप्रिय dBase-II और -III चौथी पीढ़ी की प्रोग्रामिंग भाषाओं के पीछे मूल प्रोग्रामर थे। उन्होंने संकेत दिया कि यह मूल रूप से डिजिटल अनुसंधान इंक से सामग्री में प्रलेखित था। इस शैली को कभी-कभी बैनर शैली कहा जाता है संभवतः एक खंभे से लटके हुए बैनर के समानता के लिए। इस शैली में जो कि व्हाईटस्मिथ्स शैली के लिए है जैसे के एंड आर ऑलमैन के लिए है। समापन नियंत्रण को सूची में अंतिम आइटम के समान ही इंडेंट किया गया है (और इस प्रकार उचित रूप से प्रमुखता खो देता है) शैली कुछ लोगों के लिए विज़ुअल स्कैनिंग को आसान बना सकती है क्योंकि किसी भी ब्लॉक के हेडर ही उस स्तर पर एक्सडेंट होते हैं (सिद्धांत यह है कि पूर्व ब्लॉक का समापन नियंत्रण K&R में अगले ब्लॉक हेडर के दृश्य प्रवाह के साथ हस्तक्षेप करता है और ऑलमैन शैली)। सॉफ्टवेयर उपकरण्स में रैटफोर कोड में कर्निघन और प्लेगर इस शैली का उपयोग करते हैं। // सी में के लिए (i = 0; i <10; i++) { अगर (मैं% 2 == 0) { कुछ करो (मैं); }    अन्य { कुछ और करो (i); }    } या मार्कअप भाषा में...

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

// सी में ( i = 0 ; i < 10 ; i ++ )

{ अगर ( मैं % 2 == 0 )

{ कुछ करो ( मैं );}

अन्य

{ कुछ और करें ( i ); (करो-तीसरी-चीज़ i)))


 * 1) पायथन में

i के लिए श्रेणी में ( 10 ): यदि i % 2 == 0 : (करो-कुछ-और मैं)

(करो-तीसरी-चीज़ i))) (डॉटाइम्स (मैं 10)   (अगर (= (रेम आई 2) 0) (करो-कुछ मैं) (प्रोग्न           (करो-कुछ-और मैं)            (करो-तीसरी-चीज़ i))))
 * लिस्प में

हास्केल शैली
हास्केल (प्रोग्रामिंग भाषा) लेआउट धनुकोष्ठक के स्थान को वैकल्पिक बना सकता है हालांकि भाषा में धनुकोष्ठक और अर्धविरामों की अनुमति है। नीचे दिए गए दो खंड संकलक के लिए समान रूप से स्वीकार्य हैं: ब्रेसलेस = करना पाठ <- सामग्री प्राप्त करें होने देना फर्स्टवर्ड = हेड $ शब्द टेक्स्ट bigWord = मैप toUpper FirstWord putStrLn बिगवर्ड कंजूस = करना { पाठ <- getContents ; होने देना { फर्स्टवर्ड = हेड $ शब्द टेक्स्ट ; bigWord = मैप toUpper FirstWord }  ; putStrLn बिगवर्ड हास्केल में लेआउट धनुकोष्ठक को बदल सकता है। प्राय: प्रक्रियात्मक प्रोग्रामिंग के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैं वर्गों और सामान्य रूप से कार्यक्रम पाठ लेकिन शैली का उपयोग प्राय: सूचियों, अभिलेखों और अन्य वाक्य-विन्यास तत्वों के लिए किया जाता है जो कोष्ठक या धनुकोष्ठक की कुछ जोड़ी से बना होता है जो अल्पविराम या अर्धविराम से अलग होते हैं। यदि कोड कीवर्ड का अनुसरण करता है, या  धनुकोष्ठक और अर्धविराम छोड़ देता है तो इंडेंटेशन महत्वपूर्ण है।

एपीएल शैली
प्राय: एपीएल कितना संक्षिप्त है इसके उदाहरण के लिए यहां जीवन का नाटक के लिए स्टेप कार्य का कार्यान्वयन है:

जीवन←{⊃1⍵∨.∧3 4=+/+⌿¯1 0 1∘.⊖¯1 0 1⌽¨⊂⍵}

एपीएल (प्रोग्रामिंग भाषा) शैली सी एपीएल कोड की संक्षिप्त शैली जैसा दिखता है और प्राय: उनके कार्यान्वयन में उपयोग किया जाता है। इस शैली का नेतृत्व आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक) द्वारा किया गया था और इसका उपयोग के (प्रोग्रामिंग भाषा) आर्थर की अपनी परियोजना के कार्यान्वयन में किया जाता है। J (प्रोग्रामिंग भाषा ) प्रोग्रामिंग भाषा को भी इस शैली में लागू किया गया है। विशेष रूप से एपीएल के सभी कार्यान्वयन C की इस शैली का उपयोग नहीं करते हैं अर्थात् जीएनयू एपीएल और Dyalog एपीएल ।

एपीएल शैली सी इंडेंटेशन के अतिरिक्त प्राय: नामों को एकल या दोहरे वर्णों में छोटा किया जाता है इंडेंटेशन की मात्रा को कम करने के लिए और कई पंक्तियों में फैले भाव।

ब्लॉक का ट्रैक खोना
कुछ स्थितियों में ब्लॉक सीमाओं का ट्रैक खोने का जोखिम होता है। यह अक्सर कोड के बड़े वर्गों में देखा जाता है जिसमें इंडेंटेशन के कई स्तरों के लिए नेस्टेड कई यौगिक कथन होते हैं। जब तक प्रोग्रामर नेस्टेड कथन के एक विशाल सेट के नीचे स्क्रॉल करता है तब तक हो सकता है कि वे इस बात का ट्रैक खो चुके हों कि कौन से कंट्रोल कथन कहां जाते हैं। हालाँकि अत्यधिक लंबे कोड के अन्य कारण हो सकते हैं जैसे कि बहुत अधिक चक्रीय जटिलता और इस समस्या का सामना करने वाला एक प्रोग्रामर इसके बजाय विचार कर सकता है कि क्या कोड पुनर्रचना लंबी अवधि में मदद करेगा।

प्रोग्रामर जो शुरुआती धनुकोष्ठक की गिनती पर भरोसा करते हैं उन्हें के एंड आर जैसे इंडेंटेशन शैलियों में कठिनाई हो सकती है जहां शुरुआती कोष्ठक अपने नियंत्रण प्रवाह से दृष्टि से अलग नहीं होते हैं। प्रोग्रामर जो इंडेंटेशन पर अधिक भरोसा करते हैं उन शैलियों से अधिक लाभ प्राप्त करेंगे जो लंबवत रूप से कॉम्पैक्ट हैं जैसे K&R क्योंकि ब्लॉक छोटे हैं।

जैसे नियंत्रण बयानों का ट्रैक खोने से बचने के लिए एक बड़े इंडेंटेशन का उपयोग किया जा सकता है जैसे कि 8-यूनिट-चौड़ा हार्ड टैब बड़े कार्यों को छोटे और अधिक पठनीय कार्यों में विभाजित करने के साथ। लिनक्स इस तरह से किया जाता है जबकि K&R शैली का उपयोग किया जाता है।

vi परिवार के पाठ संपादकों में ब्लॉक सीमाओं को ट्रैक करने का एक तरीका यह है कि टेक्स्ट कर्सर को धनुकोष्ठक में से किसी एक पर रखें और दबाएं  चाबी। इसके बाद कर्सर विपरीत कोष्ठक पर कूद जाता है। चूंकि टेक्स्ट कर्सर   कुंजी (अर्थात  key) ने दिशात्मक स्थिति निर्धारण जानकारी को बनाए रखा (चाहे   या   कुंजी को पहले दबाया गया था)मैक्रो (कंप्यूटर विज्ञान) कीबोर्ड और माउस मैक्रोज़ (  key) का उपयोग टेक्स्ट कर्सर को अगले कोष्ठक पर रखने के लिए किया जा सकता है एक उपयुक्त कोडिंग शैली दी गई। इसके बजाय   कुंजी का उपयोग कोडिंग मानक को लागू करने के लिए किया जा सकता है।

समापन कोष्ठक के बाद जोड़े गए इनरेखा टिप्पणियों का उपयोग करने का दूसरा तरीका है:

के लिए ( int i = 0 ; i < कुल ; i ++ ) { फू ( बार ); } // के लिए (मैं) अगर ( एक्स < 0 ) {

बार ( फू );

} // अगर (एक्स <0)

इस पद्धति का प्रमुख नुकसान कई स्थानों पर डुप्लिकेट कोड बनाए रखना है।

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

वक्तव्य सम्मिलन
मानक यूनिक्स रेखा संपादक एड (टेक्स्ट एडिटर) का उपयोग करते समय के एंड आर शैली एक और सामान्य त्रुटि को रोकती है। कंट्रोल कथन और लूप ब्लॉक के खुला कोष्ठक के बीच गलती से डाला गया एक कथन लूप की बॉडी को सिंगल ट्रिप में बदल देता है। के लिए ( इंट आई = 0 ; मैं < 10 ; मैं ++ )

वूप्स ( बार ); /* 10 बार दोहराया, i 0 से 9 तक */ {    केवल_वन्स ; /* प्रोग्रामर ने इसे 10 बार करने का इरादा किया था */

} // for (i) ← यह टिप्पणी अब मान्य नहीं है, और बहुत भ्रामक है! K&R शैली कंट्रोल कथन और खुला कोष्ठक को एक ही रेखा पर रखकर इस समस्या से बचा जाता है।

यह भी देखें

 * माध्यमिक संकेतन
 * वाक्य - विन्यास पर प्रकाश डालना
 * इंडेंटेशन (टाइपसेटिंग) # प्रोग्रामिंग में इंडेंटेशन

बाहरी संबंध

 * C Style: Standards and Guidelines: Defining Programming Standards for Professional C Programmers, Prentice Hall, ISBN 0-13-116898-3 / ISBN 978-0-13-116898-5 (full text is also online). Straker, David (1992).
 * Contextual Indent
 * जीएनयू Coding Standards

टैब और जगह

 * टैब बनाम जगह: एक शाश्वत पवित्र युद्ध जेमी ज़विंस्की द्वारा
 * क्यों मैं स्रोत कोड में कोई टैब पसंद नहीं करता एडम स्पियर्स द्वारा
 * मुझे स्रोत कोड में टैब रखना क्यों पसंद है (संग्रहीत)
 * इलास्टिक टैबस्टॉप - टैब-बनाम-जगह समस्या का समाधान

श्रेणी:सॉफ़्टवेयर युद्ध श्रेणी:पाठ संपादक सुविधाएँ श्रेणी:स्रोत कोड