इंडेंटेशन शैली: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Computer programming convention}}
{{For|a general discussion of indentation|Indentation (typesetting)}}
{{Use dmy dates|date=October 2022}}
[[कंप्यूटर प्रोग्रामिंग]] में एक इंडेंटेशन शैली प्रोग्राम संरचना को संप्रेषित करने के लिए कोड के [[ब्लॉक (प्रोग्रामिंग)]] के [[इंडेंटेशन (टाइपसेटिंग)]] को नियंत्रित करने वाला एक सम्मेलन है। यह लेख मोटे तौर पर फ्री-फॉर्म भाषाओं को संबोधित करता है जैसे [[सी ([[प्रोग्रामिंग भाषा]])]] और इसके वंश लेकिन अधिकांश अन्य प्रोग्रामिंग भाषाओं (विशेष रूप से मध्यम कोष्ठक [[घुंघराले ब्रैकेट प्रोग्रामिंग भाषा|प्रोग्रामिंग भाषा]] में) पर लागू हो सकते हैं जहां व्हॉट्सएप वर्ण है अन्यथा नगण्य। इंडेंटेशन शैली [[प्रोग्रामिंग शैली]] का केवल एक पहलू है।
[[कंप्यूटर प्रोग्रामिंग]] में एक इंडेंटेशन शैली प्रोग्राम संरचना को संप्रेषित करने के लिए कोड के [[ब्लॉक (प्रोग्रामिंग)]] के [[इंडेंटेशन (टाइपसेटिंग)]] को नियंत्रित करने वाला एक सम्मेलन है। यह लेख मोटे तौर पर फ्री-फॉर्म भाषाओं को संबोधित करता है जैसे [[सी ([[प्रोग्रामिंग भाषा]])]] और इसके वंश लेकिन अधिकांश अन्य प्रोग्रामिंग भाषाओं (विशेष रूप से मध्यम कोष्ठक [[घुंघराले ब्रैकेट प्रोग्रामिंग भाषा|प्रोग्रामिंग भाषा]] में) पर लागू हो सकते हैं जहां व्हॉट्सएप वर्ण है अन्यथा नगण्य। इंडेंटेशन शैली [[प्रोग्रामिंग शैली]] का केवल एक पहलू है।


Line 10: Line 6:


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


{| class="wikitable"
{| class="wikitable"
Line 79: Line 75:


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


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


हार्ड टैब और जगह के बीच चुनाव को लेकर प्रोग्रामरों के बीच बहस चल रही है। कई प्रारंभिक प्रोग्रामर इंडेंट करने टाइप करने में आसानी के लिए और स्रोत फ़ाइल आकार को बचाने के लिए टैब कुंजी वर्णों का उपयोग करते थे। कुछ प्रोग्रामर जैसे [[जेमी ज़विंस्की]] कहते हैं कि टैब के बजाय रिक्त स्थान का उपयोग करने से क्रॉस-प्लेटफ़ॉर्म पोर्टेबिलिटी बढ़ जाती है।<ref>{{cite web |url=http://www.jwz.org/doc/tabs-vs-spaces.html |title=Tabs versus Spaces: An Eternal Holy War |first=Jamie |last=Zawinski |year=2000 |access-date=6 June 2016}}</ref> अन्य जैसे कि वर्डप्रेस कोडिंग मानकों के लेखक इसके विपरीत कहते हैं कि हार्ड टैब पोर्टेबिलिटी बढ़ाते हैं।<ref>{{cite web |url=http://codex.wordpress.org/WordPress_Coding_Standards#Indentation |title=WordPress Coding Standards |access-date=6 June 2016}}</ref> [[GitHub|गिटहब]] पर शीर्ष 400,000 कोष के एक सर्वेक्षण में पाया गया कि रिक्त स्थान अधिक सामान्य हैं।<ref>{{cite web|url=https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of-code-spaces-or-tabs-7cfe0b5dd7fd|title=400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?|last=Hoffa|first=Felipe|date=2017-07-26|website=Medium|language=en|access-date=2019-07-09}}</ref>
हार्ड टैब और जगह के बीच चुनाव को लेकर प्रोग्रामरों के बीच बहस चल रही है। कई प्रारंभिक प्रोग्रामर इंडेंट करने टाइप करने में आसानी के लिए और स्रोत फ़ाइल आकार को बचाने के लिए टैब कुंजी वर्णों का उपयोग करते थे। कुछ प्रोग्रामर जैसे [[जेमी ज़विंस्की]] कहते हैं कि टैब के बजाय रिक्त स्थान का उपयोग करने से क्रॉस-प्लेटफ़ॉर्म पोर्टेबिलिटी बढ़ जाती है।<ref>{{cite web |url=http://www.jwz.org/doc/tabs-vs-spaces.html |title=Tabs versus Spaces: An Eternal Holy War |first=Jamie |last=Zawinski |year=2000 |access-date=6 June 2016}}</ref> अन्य जैसे कि वर्डप्रेस कोडिंग मानकों के लेखक इसके विपरीत कहते हैं कि हार्ड टैब पोर्टेबिलिटी बढ़ाते हैं।<ref>{{cite web |url=http://codex.wordpress.org/WordPress_Coding_Standards#Indentation |title=WordPress Coding Standards |access-date=6 June 2016}}</ref> [[GitHub|गिटहब]] पर शीर्ष 400,000 कोष के एक सर्वेक्षण में पाया गया कि रिक्त स्थान अधिक सामान्य हैं।<ref>{{cite web|url=https://medium.com/@hoffa/400-000-github-repositories-1-billion-files-14-terabytes-of-code-spaces-or-tabs-7cfe0b5dd7fd|title=400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?|last=Hoffa|first=Felipe|date=2017-07-26|website=Medium|language=en|access-date=2019-07-09}}</ref>
Line 96: Line 92:


=== के एंड आर शैली ===
=== के एंड आर शैली ===
{{anchor|1TBS|OTBS|1TBF}}
के एंड आर शैली (कर्निघन और रिची शैली) और हैकर शब्दजाल में बारीकी से संबंधित एक सच्ची कोष्ठक शैली<ref name="jargon">{{cite web |url=http://www.catb.org/jargon/html/I/indent-style.html |title=The Jargon File |version=4.4.7 |date=29 December 2003 |access-date=18 August 2014}}</ref><ref>{{cite book |url={{google books|id=vweTteq3OLQC|page=51|plain-url=yes}} |title=Checking C programs with Lint |first=Ian F. |last=Darwin |publisher=O'Reilly and Assosciates |location=California |page=51 |isbn=9780937175309|year=1988 }}</ref> (1TBS के रूप में संक्षिप्त<ref name="catb.org">{{Cite web|url=http://catb.org/jargon/html/0/one-TBS.html|title=1TBS}}</ref>) प्राय: सी, [[सी ++]], और अन्य मध्यम-कोष्ठक प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं। यह मूल यूनिक्स कर्नेल, [[ब्रायन कर्निघन]] और डेनिस रिची में इस्तेमाल की जाने वाली शैली थी। रिची की पुस्तक द [[[[कर्ली-ब्रेस प्रोग्रामिंग लैंग्वेज|मध्यम-कोष्ठक प्रोग्रामिंग भाषा]] ]] साथ ही कर्निघन और पी. जे. प्लेगर की पुस्तक [[प्रोग्रामिंग शैली के तत्व]] के एंड आर का पालन करते समय प्रत्येक कार्य में अगली पंक्ति में उसी इंडेंटेशन स्तर पर उसके शीर्षलेख के रूप में उद्घाटन कोष्ठक होता है, धनुकोष्ठक के भीतर बयान इंडेंट होते हैं और अंत में समापन कोष्ठक कार्य के शीर्षलेख के समान अपनी खुद की एक पंक्ति में इंडेंटेशन स्तर पर होता है।


के एंड आर शैली (कर्निघन और रिची शैली) और हैकर शब्दजाल में बारीकी से संबंधित एक सच्ची कोष्ठक शैली<ref name="jargon">{{cite web |url=http://www.catb.org/jargon/html/I/indent-style.html |title=The Jargon File |version=4.4.7 |date=29 December 2003 |access-date=18 August 2014}}</ref><ref>{{cite book |url={{google books|id=vweTteq3OLQC|page=51|plain-url=yes}} |title=Checking C programs with Lint |first=Ian F. |last=Darwin |publisher=O'Reilly and Assosciates |location=California |page=51 |isbn=9780937175309|year=1988 }}</ref> (1TBS के रूप में संक्षिप्त<ref name="catb.org">{{Cite web|url=http://catb.org/jargon/html/0/one-TBS.html|title=1TBS}}</ref>) प्राय: सी, [[सी ++]], और अन्य मध्यम-कोष्ठक प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं। यह मूल यूनिक्स कर्नेल, [[ब्रायन कर्निघन]] और डेनिस रिची में इस्तेमाल की जाने वाली शैली थी। रिची की पुस्तक द [[[[कर्ली-ब्रेस प्रोग्रामिंग लैंग्वेज|मध्यम-कोष्ठक प्रोग्रामिंग भाषा]] ]] साथ ही कर्निघन और पी. जे. प्लेगर की पुस्तक [[प्रोग्रामिंग शैली के तत्व]] के एंड आर का पालन करते समय प्रत्येक कार्य में अगली पंक्ति में उसी इंडेंटेशन स्तर पर उसके शीर्षलेख के रूप में उद्घाटन कोष्ठक होता है, धनुकोष्ठक के भीतर बयान इंडेंट होते हैं और अंत में समापन कोष्ठक कार्य  के शीर्षलेख के समान इंडेंटेशन स्तर पर होता है अपनी खुद की एक पंक्ति में।
एक कार्य  के अंदर बहु-पंक्ति ब्लॉक हालांकि उनके संबंधित नियंत्रण बयानों के समान रेखा पर उनके उद्घाटन धनुकोष्ठक होते हैं। समापन धनुकोष्ठक स्वयं की एक पंक्ति में रहते हैं जब तक कि एक कीवर्ड द्वारा पीछा नहीं किया जाता<code>else</code> या <code>while</code>इस तरह के गैर-[[टाइपोग्राफिक संरेखण]] धनुकोष्ठक को मिस्र के धनुकोष्ठक (या मिस्र के कोष्ठक) के नाम से जाना जाता है जो प्राचीन मिस्र के कुछ काल्पनिक पोज़ में हथियारों के समान हैं।<ref>{{cite web |title=Java Style Guide |url=https://www.seas.upenn.edu/~cis120/current/java_style.shtml#f |quote=Using either "Egyptian" curly braces or C-style curly braces is acceptable |url-status=dead |archive-url=https://web.archive.org/web/20180712222126/https://www.seas.upenn.edu/~cis120/current/java_style.shtml |archive-date=2018-07-12}}</ref><ref>{{cite web |title=Egyptian brackets |url=http://foldoc.org/Egyptian+brackets |website=[[Foldoc]] |quote=A {{sic|humou|rous}} term for K&R indent style, referring to the "one hand up in front, one down behind" pose}}</ref><ref>{{cite web |title=Google JavaScript Style Guide |url=https://google.github.io/styleguide/jsguide.html#formatting-nonempty-blocks |quote=Braces follow the Kernighan and Ritchie style ("Egyptian brackets") for nonempty blocks and block-like constructs}}</ref> K&R में सिंगल-रेखा ब्लॉक में धनुकोष्ठक नहीं होते हैं।
  इंट मेन ( इंट एआरजीसी , चार * एआरजीवी [])   


{{anchor|Egyptian}}एक कार्य के अंदर बहु-पंक्ति ब्लॉक हालांकि उनके संबंधित नियंत्रण बयानों के समान रेखा पर उनके उद्घाटन धनुकोष्ठक होते हैं। समापन धनुकोष्ठक स्वयं की एक पंक्ति में रहते हैं जब तक कि एक कीवर्ड द्वारा पीछा नहीं किया जाता<code>else</code> या <code>while</code>इस तरह के गैर-[[टाइपोग्राफिक संरेखण]] धनुकोष्ठक को मिस्र के धनुकोष्ठक (या मिस्र के कोष्ठक) के नाम से जाना जाता है जो प्राचीन मिस्र के कुछ काल्पनिक पोज़ में हथियारों के समान हैं।<ref>{{cite web |title=Java Style Guide |url=https://www.seas.upenn.edu/~cis120/current/java_style.shtml#f |quote=Using either "Egyptian" curly braces or C-style curly braces is acceptable |url-status=dead |archive-url=https://web.archive.org/web/20180712222126/https://www.seas.upenn.edu/~cis120/current/java_style.shtml |archive-date=2018-07-12}}</ref><ref>{{cite web |title=Egyptian brackets |url=http://foldoc.org/Egyptian+brackets |website=[[Foldoc]] |quote=A {{sic|humou|rous}} term for K&R indent style, referring to the "one hand up in front, one down behind" pose}}</ref><ref>{{cite web |title=Google JavaScript Style Guide |url=https://google.github.io/styleguide/jsguide.html#formatting-nonempty-blocks |quote=Braces follow the Kernighan and Ritchie style ("Egyptian brackets") for nonempty blocks and block-like constructs}}</ref> K&R में सिंगल-रेखा ब्लॉक में धनुकोष्ठक नहीं होते हैं।
  {
 
    ...
<वाक्यविन्यास प्रकाश लैंग = सी>
    जबकि ( एक्स == वाई ) {  
 
        कुछ ();
इंट मेन (इंट एआरजीसी, चार * एआरजीवी [])
        कुछ और ();
 
{
        अगर ( some_error )  
    ...
            do_सही (); // K&R में सिंगल-स्टेटमेंट ब्लॉक में ब्रेसेस नहीं होते हैं। अन्य
    जबकि (एक्स == वाई) {
       
        कुछ();
            जारी_जैसा_सामान्य ();
        कुछ और();
    }
 
        अगर (कुछ_त्रुटि)
    अंतिम बात ();
            do_सही (); // K&R में सिंगल- कथन ब्लॉक में धनुकोष्ठक नहीं होते हैं।
    ...
        अन्य
}
            जारी_जैसा_सामान्य ();
सी प्रोग्रामिंग भाषा प्रभाव इस शैली को स्पष्ट रूप से निर्दिष्ट नहीं करता है हालांकि पूरी किताब में इसका लगातार पालन किया जाता है। पुस्तक से धनुकोष्ठक की स्थिति कम महत्वपूर्ण है हालांकि लोग भावुक विश्वास रखते हैं। हमने कई लोकप्रिय शैलियों में से एक को चुना है। एक शैली चुनें जो आपको सूट करे फिर उसका लगातार उपयोग करें।
    }
 
    अंतिम बात ();
    ...
}
</वाक्यविन्यास हाइलाइट>
 
सी प्रोग्रामिंग भाषा प्रभाव इस शैली को स्पष्ट रूप से निर्दिष्ट नहीं करता है हालांकि पूरी किताब में इसका लगातार पालन किया जाता है। पुस्तक से:
 
<ब्लॉककोट>
 
धनुकोष्ठक की स्थिति कम महत्वपूर्ण है हालांकि लोग भावुक विश्वास रखते हैं। हमने कई लोकप्रिय शैलियों में से एक को चुना है। एक शैली चुनें जो आपको सूट करे फिर उसका लगातार उपयोग करें।  
 
</ब्लॉककोट>


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


<वाक्यविन्यास प्रकाश लैंग = सी>
इंट मेन ( एआरजीसी , एआरजीवी )
 
    इंट एर्गसी ;  
/* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी शैली */
    चार * एआरजीवी [];
 
{
इंट मेन (एआरजीसी, एआरजीवी)
    ...
    इंट एआरजीसी;
}
    चार * अर्गव [];
{
    ...
}
 
</वाक्यविन्यास हाइलाइट>
 
{{anchor|Variant: 1TBS}}
{{anchor|Variant: 1TBS}}
====वैरिएंट: 1TBS (OTBS)====
====वैरिएंट: 1TBS (OTBS)====
Line 153: Line 130:


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


<वाक्यविन्यास प्रकाश लैंग = सी>
    अगर ( एक्स < 0 ) {  
 
        डालता है ( "नकारात्मक" );
शून्य चेकनेगेटिव (एक्स) {
    } और {
    अगर (एक्स <0) {
        अऋणात्मक ( एक्स )
        पुट (नकारात्मक);
    } अन्य {
        अऋणात्मक (एक्स);
    }
}
 
</वाक्यविन्यास हाइलाइट>
 
द वन ट्रू कोष्ठक शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है<ref name="onetruestyle" />जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।<ref name="jargon" />
द वन ट्रू कोष्ठक शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है<ref name="onetruestyle" />जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।<ref name="jargon" />
==== संस्करण: [[लिनक्स कर्नेल]] ====
==== संस्करण: [[लिनक्स कर्नेल]] ====
K&R शैली का एक लघु संस्करण लिनक्स कर्नेल शैली है जो लिनक्स कर्नेल के स्रोत ट्री में इसके व्यापक उपयोग के लिए जानी जाती है।<ref>A detailed description of the style is given at [https://www.kernel.org/doc/html/latest/process/coding-style.html kernel.org].</ref> [[लिनस टोरवाल्ड्स]] दृढ़ता से सभी योगदानकर्ताओं को इसका पालन करने की सलाह देते हैं। शैली के एंड आर से कई तत्वों को उधार लेती है।
K&R शैली का एक लघु संस्करण लिनक्स कर्नेल शैली है जो लिनक्स कर्नेल के स्रोत ट्री में इसके व्यापक उपयोग के लिए जानी जाती है।<ref>A detailed description of the style is given at [https://www.kernel.org/doc/html/latest/process/coding-style.html kernel.org].</ref> [[लिनस टोरवाल्ड्स]] दृढ़ता से सभी योगदानकर्ताओं को इसका पालन करने की सलाह देते हैं। शैली के एंड आर से कई तत्वों को उधार लेती है।


कर्नेल शैली इंडेंटेशन के लिए [[टैब का विश्राम स्थान]] का उपयोग करती है (टैब स्टॉप प्रत्येक 8 वर्ण सेट करता है)। किसी कार्य  के मध्यम धनुकोष्ठक को खोलना कार्य  हेडर के बाद रेखा की शुरुआत में जाता है। कोई भी अन्य खुला मध्यम धनुकोष्ठक उसी रेखा पर चलते हैं जिस पर संबंधित कथन एक जगह द्वारा अलग किया जाता है। ए में स्तर <code>स्विच</code>बयान संलग्न ब्लॉक के साथ गठबंधन कर रहे हैं (इंडेंट का केवल एक स्तर है)। रेखा की लंबाई 80 वर्णों तक सीमित हुआ करती थी{{snd}}इसे 2020 में बढ़ाकर 100 कर दिया गया था लेकिन मूल सीमा को अभी भी पसंद किया जाता है।<ref>{{cite web |last1=Larabel |first1=Michael |title=The Linux Kernel Deprecates The 80 Character Line Coding Style |url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Deprecates-80-Col |website=Phoronix |publisher=Phoronix Media |access-date=1 May 2022}}</ref> यौगिक कथन के एकल-विधान शरीर को मध्यम धनुकोष्ठक से घिरा नहीं होना चाहिए। यदि एक में एक या एक से अधिक सब कथन<code>if-else</code> कथन में धनुकोष्ठक की आवश्यकता होती है तो दोनों सब कथन को मध्यम धनुकोष्ठक के अंदर लपेटा जाना चाहिए:
कर्नेल शैली इंडेंटेशन के लिए [[टैब का विश्राम स्थान]] का उपयोग करती है (टैब स्टॉप प्रत्येक 8 वर्ण सेट करता है)। किसी कार्य  के मध्यम धनुकोष्ठक को खोलना कार्य  हेडर के बाद रेखा की शुरुआत में जाता है। कोई भी अन्य खुला मध्यम धनुकोष्ठक उसी रेखा पर चलते हैं जिस पर संबंधित कथन एक जगह द्वारा अलग किया जाता है। ए में स्तर <code>स्विच</code>बयान संलग्न ब्लॉक के साथ गठबंधन कर रहे हैं (इंडेंट का केवल एक स्तर है)। रेखा की लंबाई 80 वर्णों तक सीमित हुआ करती थी{{snd}}इसे 2020 में बढ़ाकर 100 कर दिया गया था लेकिन मूल सीमा को अभी भी पसंद किया जाता है।<ref>{{cite web |last1=Larabel |first1=Michael |title=The Linux Kernel Deprecates The 80 Character Line Coding Style |url=https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Deprecates-80-Col |website=Phoronix |publisher=Phoronix Media |access-date=1 May 2022}}</ref> यौगिक कथन के एकल-विधान शरीर को मध्यम धनुकोष्ठक से घिरा नहीं होना चाहिए। यदि एक में एक या एक से अधिक सब कथन<code>if-else</code> कथन में धनुकोष्ठक की आवश्यकता होती है तो दोनों सब कथन को मध्यम धनुकोष्ठक के अंदर लपेटा जाना चाहिए:  
 
  इंट पावर ( इंट एक्स , इंट वाई )  
<वाक्यविन्यास प्रकाश लैंग = सी>
        { इंट परिणाम ;  
 
इंट पावर (इंट एक्स, इंट वाई)
        अगर ( वाई < 0 ) {  
 
                परिणाम = 0 ;
{
        } और {
        इंट परिणाम;
                परिणाम = 1 ;
 
                जबकि ( वाई -- > 0 )  
        अगर (वाई <0) {
                        परिणाम * = एक्स ;
                परिणाम = 0;
        }
        } अन्य {
        वापसी परिणाम ;  
                परिणाम = 1;
                जबकि (y-- > 0)
                        परिणाम * = एक्स;
        }
        वापसी परिणाम;
}
 
</वाक्यविन्यास हाइलाइट>


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


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


==== संस्करण: जावा ====
==== संस्करण: जावा ====
Line 209: Line 171:
स्ट्रॉस्ट्रुप शैली [[बज़्ने स्ट्रॉस्ट्रुप]] का सी ++ के लिए के एंड आर शैली का अनुकूलन है जैसा कि उनकी पुस्तकों में प्रयोग किया जाता है जैसे कि प्रोग्रामिंग सिद्धांतों और अभ्यास का उपयोग करना सी ++ और [[सी ++ प्रोग्रामिंग भाषा]]<ref name="ppp">{{cite web |url=https://www.stroustrup.com/Programming/PPP-style.pdf |title=PPP Style Guide |first=Bjarne |last=Stroustrup |date=September 2010}}</ref>
स्ट्रॉस्ट्रुप शैली [[बज़्ने स्ट्रॉस्ट्रुप]] का सी ++ के लिए के एंड आर शैली का अनुकूलन है जैसा कि उनकी पुस्तकों में प्रयोग किया जाता है जैसे कि प्रोग्रामिंग सिद्धांतों और अभ्यास का उपयोग करना सी ++ और [[सी ++ प्रोग्रामिंग भाषा]]<ref name="ppp">{{cite web |url=https://www.stroustrup.com/Programming/PPP-style.pdf |title=PPP Style Guide |first=Bjarne |last=Stroustrup |date=September 2010}}</ref>


ऊपर दिए गए वेरिएंट के विपरीत स्ट्रॉस्ट्रुप एक कडलड एल्स का उपयोग नहीं करता है। इस प्रकार स्ट्राउस्ट्रप लिखेंगे<ref name="ppp" />
ऊपर दिए गए वेरिएंट के विपरीत स्ट्रॉस्ट्रुप एक कडलड एल्स का उपयोग नहीं करता है। इस प्रकार स्ट्राउस्ट्रप लिखेंगे
 
<वाक्यविन्यास प्रकाश लैंग = सी>
     अगर (एक्स <0) {
     अगर (एक्स <0) {
         पुट (नकारात्मक);
         पुट (नकारात्मक);
Line 220: Line 180:
         अऋणात्मक (एक्स);
         अऋणात्मक (एक्स);
     }
     }
</वाक्यविन्यास हाइलाइट>
स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है:
स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है:
<वाक्यविन्यास लैंग = सीपीपी>
     वर्ग वेक्टर {
     वर्ग वेक्टर {
     जनता:
     जनता:
Line 234: Line 190:
         इंट एसजेड; // तत्वों की संख्या
         इंट एसजेड; // तत्वों की संख्या
     };
     };
</वाक्यविन्यास हाइलाइट>
स्ट्रॉस्ट्रुप स्तर को इंडेंट नहीं करता है {{code|public:}}और {{code|private:}} इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला कोष्ठक एक नई रेखा पर शुरू होती है एक क्लास की खुला कोष्ठक उसी रेखा पर होती है जिस पर क्लास का नाम होता है।
स्ट्रॉस्ट्रुप स्तर को इंडेंट नहीं करता है {{code|public:}}और {{code|private:}} इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला कोष्ठक एक नई रेखा पर शुरू होती है एक क्लास की खुला कोष्ठक उसी रेखा पर होती है जिस पर क्लास का नाम होता है।


Line 244: Line 198:
SunOS कर्नेल और यूजरलैंड एक समान इंडेंटेशन शैली का उपयोग करते हैं।<ref name="C Style and Coding Standards for SunOS" />केएनएफ की तरह यह भी एटी एंड टी शैली के दस्तावेजों पर आधारित था और इसे कभी-कभी बिल जॉय नॉर्मल फॉर्म भी कहा जाता है।<ref name="DTraceToolkit Style Guide">{{cite web |last1=Gregg |first1=Brendan |title=DTraceToolkit Style Guide |url=http://www.brendangregg.com/DTraceToolkit/style.html |access-date=6 February 2015}}</ref> SunOS दिशानिर्देश 1996 में प्रकाशित हुआ था और एएनएसआई सी पर संक्षेप में चर्चा की गई है। स्रोत फ़ाइलों की सूची के इंडेंटेशन की शुद्धता को बिल शैनन द्वारा लिखित cstyle प्रोग्राम द्वारा सत्यापित किया जा सकता है।<ref name="C Style and Coding Standards for SunOS" /><ref name="DTraceToolkit Style Guide" /><ref name="illumos-gate cstyle">{{cite web |url=https://github.com/illumos/illumos-gate/blob/master/usr/src/tools/scripts/cstyle.pl |title=cstyle.pl |last1=Shannon |first1=Bill |date=9 September 1998 |website=illumos-gate |publisher=Sun Microsystems, Inc. |access-date=6 February 2015 |version=1.58}}</ref>
SunOS कर्नेल और यूजरलैंड एक समान इंडेंटेशन शैली का उपयोग करते हैं।<ref name="C Style and Coding Standards for SunOS" />केएनएफ की तरह यह भी एटी एंड टी शैली के दस्तावेजों पर आधारित था और इसे कभी-कभी बिल जॉय नॉर्मल फॉर्म भी कहा जाता है।<ref name="DTraceToolkit Style Guide">{{cite web |last1=Gregg |first1=Brendan |title=DTraceToolkit Style Guide |url=http://www.brendangregg.com/DTraceToolkit/style.html |access-date=6 February 2015}}</ref> SunOS दिशानिर्देश 1996 में प्रकाशित हुआ था और एएनएसआई सी पर संक्षेप में चर्चा की गई है। स्रोत फ़ाइलों की सूची के इंडेंटेशन की शुद्धता को बिल शैनन द्वारा लिखित cstyle प्रोग्राम द्वारा सत्यापित किया जा सकता है।<ref name="C Style and Coding Standards for SunOS" /><ref name="DTraceToolkit Style Guide" /><ref name="illumos-gate cstyle">{{cite web |url=https://github.com/illumos/illumos-gate/blob/master/usr/src/tools/scripts/cstyle.pl |title=cstyle.pl |last1=Shannon |first1=Bill |date=9 September 1998 |website=illumos-gate |publisher=Sun Microsystems, Inc. |access-date=6 February 2015 |version=1.58}}</ref>


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


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


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


<वाक्यविन्यास प्रकाश लैंग = सी>
      अगर (डेटा! = न्यूल एंड& रेस> 0) {
 
जबकि (एक्स == वाई) {
        कुछ();
        कुछ और();
}
 
अंतिम बात ();


</वाक्यविन्यास हाइलाइट>
  अगर (JS_DefineProperty (सीएक्स, ओ, डेटा,
 
<वाक्यविन्यास प्रकाश लैंग = सी>
 
अगर (डेटा! = न्यूल एंड& रेस> 0) {
        अगर (JS_DefineProperty (सीएक्स, ओ, डेटा,
             STRING_TO_JSVAL(JS_NewStringCopyN(cx, डेटा, Res)),
             STRING_TO_JSVAL(JS_NewStringCopyN(cx, डेटा, Res)),
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
Line 271: Line 217:
         }
         }
         पीक्यू फ्रीमेम (डेटा);
         पीक्यू फ्रीमेम (डेटा);
} अन्य {
} अन्य  
         अगर (JS_DefineProperty (cx, o, डेटा, OBJECT_TO_JSVAL (NULL),
         अगर (JS_DefineProperty (cx, o, डेटा, OBJECT_TO_JSVAL (NULL),
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
Line 277: Line 223:
                 गोटो गलती;
                 गोटो गलती;
         }
         }
}
</वाक्यविन्यास हाइलाइट>


<वाक्यविन्यास प्रकाश लैंग = सी>
pgresult_constructor ( JSContext * cx , JSObject * obj , uintN argc ,    
 
    jsval * argv , jsval * प्रतिद्वंद्वी )  
स्थिर जेएसबूल
{
 
pgresult_constructor(JSContext *cx, JSObject *obj, uintN argc,
        QUEUE_EXCEPTION ( "PGresult वर्ग उपयोगकर्ता-तात्कालिक नहीं है" );
    jsval * argv, jsval * रावल)
{
        वापसी ( JS_FALSE );  
 
}
        QUEUE_EXCEPTION (पीग्रेसल्ट वर्ग उपयोगकर्ता-तत्काल योग्य नहीं है);
 
        वापसी (JS_FALSE);
}
</वाक्यविन्यास हाइलाइट>


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


यह शैली अगली पंक्ति पर नियंत्रण कथन से जुड़े कोष्ठक को नियंत्रण कथन के समान स्तर पर इंडेंट करती है। कोष्ठकों के भीतर कथनों को अगले स्तर पर इंडेंट किया जाता है।<ref name= allman >{{cite web |url=http://www.catb.org/jargon/html/I/indent-style.html |title=indent style |work=The on-line hacker Jargon File |via=catb |access-date=2022-03-20 |version=4.4.7 |date=2003-12-29}}</ref>
यह शैली अगली पंक्ति पर नियंत्रण कथन से जुड़े कोष्ठक को नियंत्रण कथन के समान स्तर पर इंडेंट करती है। कोष्ठकों के भीतर कथनों को अगले स्तर पर इंडेंट किया जाता है।<ref name= allman >{{cite web |url=http://www.catb.org/jargon/html/I/indent-style.html |title=indent style |work=The on-line hacker Jargon File |via=catb |access-date=2022-03-20 |version=4.4.7 |date=2003-12-29}}</ref>
 
जबकि ( एक्स == वाई ) {
<वाक्यविन्यास प्रकाश लैंग = सी>
    कुछ ();
 
    कुछ और ();
जबकि (एक्स == वाई)
}
 
{
अंतिम बात ()
    कुछ();
    कुछ और();
}
 
अंतिम बात ();
 
</वाक्यविन्यास हाइलाइट>
 
यह शैली [[पास्कल (प्रोग्रामिंग भाषा)]] भाषाओं और [[कारोबार-एसक्यूएल]] द्वारा उपयोग किए जाने वाले मानक इंडेंटेशन के समान है जहां धनुकोष्ठक कीवर्ड के बराबर हैं I <code>begin</code> और <code>end</code>.
यह शैली [[पास्कल (प्रोग्रामिंग भाषा)]] भाषाओं और [[कारोबार-एसक्यूएल]] द्वारा उपयोग किए जाने वाले मानक इंडेंटेशन के समान है जहां धनुकोष्ठक कीवर्ड के बराबर हैं I <code>begin</code> और <code>end</code>.
(* पास्कल में ऑलमैन कोड इंडेंटेशन स्टाइल का उदाहरण *)


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


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


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


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


</वाक्यविन्यास हाइलाइट>
इस तरह भी सशर्त संकलन के साथ
 
  इंट सी ; #ifdef HAS_GETCH  
इस तरह भी सशर्त संकलन के साथ:
जबकि (( सी = गेटच ()) ! = ईओएफ )        
 
#else
<वाक्यविन्यास प्रकाश लैंग = सी>
जबकि (( सी = getchar ()) ! = ईओएफ )        
    इंट सी;
#endif
#ifdef HAS_GETCH
{  
    जबकि ((सी = getch ())! = ईओएफ)
        do_something ( सी );
#अन्य
    जबकि ((सी = getchar ())! = ईओएफ)
#अगर अंत
    {
        do_something (सी);
    }
</वाक्यविन्यास हाइलाइट>


====वैरिएंट: ऑलमैन-8====
====वैरिएंट: ऑलमैन-8====
शिक्षा में उपयोग के लिए एक लोकप्रिय संस्करण{{Citation needed|date=October 2016}} ऑलमैन-8 8-जगह इंडेंटेशन टैब और K&R के लिनक्स कर्नेल वेरिएंट की 80-कॉलम सीमा का उपयोग करता है। शैली कथित तौर पर प्रोजेक्टर पर पठनीयता में सुधार करने में मदद करती है। साथ ही इंडेंटेशन आकार और कॉलम प्रतिबंध कोड ब्लॉक के अत्यधिक नेस्टिंग की पहचान करने के लिए एक दृश्य क्यू बनाने में मदद करता है। ये लाभ नए डेवलपर्स और शिक्षार्थियों को कोड जटिलता को प्रबंधित करने के लिए निहित मार्गदर्शन प्रदान करने में मदद करने के लिए गठबंधन करते हैं।{{Citation needed|date=October 2016}}
शिक्षा में उपयोग के लिए एक लोकप्रिय संस्करण{{Citation needed|date=October 2016}} ऑलमैन-8 8-जगह इंडेंटेशन टैब और K&R के लिनक्स कर्नेल वेरिएंट की 80-कॉलम सीमा का उपयोग करता है। शैली कथित तौर पर प्रोजेक्टर पर पठनीयता में सुधार करने में मदद करती है। साथ ही इंडेंटेशन आकार और कॉलम प्रतिबंध कोड ब्लॉक के अत्यधिक नेस्टिंग की पहचान करने के लिए एक दृश्य क्यू बनाने में मदद करता है। ये लाभ नए डेवलपर्स और शिक्षार्थियों को कोड जटिलता को प्रबंधित करने के लिए निहित मार्गदर्शन प्रदान करने में मदद करने के लिए गठबंधन करते हैं।{{Citation needed|date=October 2016}}
=== [[गोरे लोग]] शैली ===
=== [[गोरे लोग]] शैली ===
व्हाइटस्मिथ शैली जिसे कभी-कभी विशरट शैली भी कहा जाता है मूल रूप से पहले वाणिज्यिक सी कंपाइलर, व्हाइटस्मिथ कंपाइलर के लिए प्रलेखन में उपयोग की गई थी। यह विंडोज के शुरुआती दिनों में भी लोकप्रिय था क्योंकि इसका उपयोग तीन प्रभावशाली विंडोज प्रोग्रामिंग किताबों में किया गया था, [[डेविड ड्यूरेंट]], [[कार्लसन की क्षमता]] और [[पॉल याओ]] द्वारा प्रोग्रामर गाइड टू विंडोज, [[चार्ल्स पेटज़ोल्ड]] द्वारा [[प्रोग्रामिंग विंडोज]] और पीटर द्वारा विंडोज 3.0 पावर प्रोग्रामिंग तकनीक नॉर्टन और याओ।
व्हाइटस्मिथ शैली जिसे कभी-कभी विशरट शैली भी कहा जाता है मूल रूप से पहले वाणिज्यिक सी संकलक, व्हाइटस्मिथ संकलक के लिए प्रलेखन में उपयोग की गई थी। यह विंडोज के शुरुआती दिनों में भी लोकप्रिय था क्योंकि इसका उपयोग तीन प्रभावशाली विंडोज प्रोग्रामिंग किताबों में किया गया था, [[डेविड ड्यूरेंट]], [[कार्लसन की क्षमता]] और [[पॉल याओ]] द्वारा प्रोग्रामर गाइड टू विंडोज, [[चार्ल्स पेटज़ोल्ड]] द्वारा [[प्रोग्रामिंग विंडोज]] और पीटर द्वारा विंडोज 3.0 पावर प्रोग्रामिंग तकनीक नॉर्टन और याओ।


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


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


रैटलिफ़ शैली की तरह समापन कोष्ठक को धनुकोष्ठक के भीतर बयानों के समान ही इंडेंट किया जाता है।<ref name="mcconnell" />
रैटलिफ़ शैली की तरह समापन कोष्ठक को धनुकोष्ठक के भीतर बयानों के समान ही इंडेंट किया जाता है।<ref name="mcconnell" />
<वाक्यविन्यास प्रकाश लैंग = सी>


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


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


</वाक्यविन्यास हाइलाइट>
एक उदाहरण:    
 
अगर ( डेटा ! = न्यूल एंड & रेस > 0 )  
इस शैली के फायदे ऑलमैन शैली के समान हैं। ब्लॉक स्पष्ट रूप से नियंत्रण बयानों से अलग हैं। ब्लॉक के साथ धनुकोष्ठक का संरेखण इस बात पर जोर देता है कि पूर्ण ब्लॉक संकल्पनात्मक और प्रोग्रामेटिक रूप से एक मिश्रित कथन है। धनुकोष्ठक को इंडेंट करना इस बात पर जोर देता है कि वे कंट्रोल कथन के अधीन हैं। अंतिम कोष्ठक अब कथन के अनुरूप नहीं है बल्कि खुलािंग कोष्ठक के साथ है।
    {if ( ! JS_DefineProperty ( cx , o , "data" , STRING_TO_JSVAL ( JS_NewStringCopyN ( cx , data , res )), NULL , NULL , JSPROP_ENUMERATE ))        
 
        {
एक उदाहरण:
        QUEUE_EXCEPTION ( "आंतरिक त्रुटि!" );
 
        गोटो गलती ;  
<वाक्यविन्यास प्रकाश लैंग = सी>
        }
 
    पीक्यूफ्रीमेम ( डेटा );
अगर (डेटा! = न्यूल एंड& रेस> 0)
    }
    {
और अगर ( ! JS_DefineProperty ( cx , o , "डेटा" , OBJECT_TO_JSVAL ( NULL ), NULL , NULL , JSPROP_ENUMERATE ))      
    if (!JS_DefineProperty(cx, o, data , STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)), NULL, NULL, JSPROP_ENUMERATE))
    {
        {
    QUEUE_EXCEPTION ( "आंतरिक त्रुटि!" );
        QUEUE_EXCEPTION(आंतरिक त्रुटि!);
    गोटो गलती ;  
        गोटो गलती;
    }
        }
<code>else if elif</code>प्रीप्रोसेसर स्टेटमेंट की तरह स्टेटमेंट के रूप में माना जाता है।
    पीक्यू फ्रीमेम (डेटा);
    }
और अगर (!JS_DefineProperty(cx, o, data , OBJECT_TO_JSVAL(NULL), NULL, NULL, JSPROP_ENUMERATE))
    {
    QUEUE_EXCEPTION(आंतरिक त्रुटि!);
    गोटो गलती;
    }
</वाक्यविन्यास हाइलाइट>
 
<code>else if</code> कथन के रूप में व्यवहार किया जाता है, जैसे कि <code>elif</code> प्रीप्रोसेसर कथन।


=== जीएनयू शैली ===
=== जीएनयू शैली ===
Line 435: Line 324:


[[रिचर्ड स्टालमैन]] द्वारा लोकप्रिय लेआउट [[लिस्प (प्रोग्रामिंग भाषा)]] कोड लिखने की उनकी पृष्ठभूमि से प्रभावित हो सकता है।<ref name="gnu.org-lisp">{{cite web |url=https://www.gnu.org/gnu/rms-lisp.html |title=My Lisp Experiences and the Development of GNU Emacs (Transcript of speech at the International Lisp Conference) |first=Richard |last=Stallman |date=28 October 2002 |access-date=6 June 2016}}</ref> लिस्प में एक ब्लॉक (एक प्रोग्न) के बराबर एक प्रथम श्रेणी की डेटा इकाई है और इसे अपना इंडेंटेशन स्तर देने से उस पर जोर देने में मदद मिलती है जबकि सी में एक ब्लॉक केवल वाक्य - विन्यास है। यह शैली 1960 और 1970 के दशक की कुछ [[ALGOL]] और [[XPL]] प्रोग्रामिंग भाषा पाठ्यपुस्तकों में भी पाई जा सकती है।<ref>{{cite book |author-last1=Baumann |author-first1=Richard |author-link1=:de:Richard Baumann (Mathematiker) |author-last2=Feliciano |author-first2=Manuel<!--, Jr.? --> |author-last3=Bauer |author-first3=Friedrich Ludwig |author-link3=Friedrich Ludwig Bauer |author-last4=Samelson |author-first4=Klaus |author-link4=Klaus Samelson |date=1964 |title=Introduction to ALGOL – A primer for the non-specialist, emphasizing the practical uses of the algorithmic language |series=Series in Automatic Computation |publisher=[[Prentice-Hall, Inc.]] |publication-place=Englewood Cliffs, New Jersey, USA |isbn=0-13-477828-6 |lccn=64-10740 |id=ark:/13960/t6qz35p37 |url=https://archive.org/details/introductiontoal00baum |access-date=2022-10-23}}</ref><ref>W. M. McKeeman, J. J. Horning, and D. B. Wortman, ''A Compiler Generator'', 1970, https://archive.org/details/compilergenerato00mcke</ref>{{discuss|editorial option in lieu of source}} हालांकि सीधे इंडेंटेशन से संबंधित नहीं है। जीएनयू कोडिंग शैली में कार्य के तर्कों की ब्रैकेटेड सूची से पहले एक स्थान भी सम्मिलित  है।
[[रिचर्ड स्टालमैन]] द्वारा लोकप्रिय लेआउट [[लिस्प (प्रोग्रामिंग भाषा)]] कोड लिखने की उनकी पृष्ठभूमि से प्रभावित हो सकता है।<ref name="gnu.org-lisp">{{cite web |url=https://www.gnu.org/gnu/rms-lisp.html |title=My Lisp Experiences and the Development of GNU Emacs (Transcript of speech at the International Lisp Conference) |first=Richard |last=Stallman |date=28 October 2002 |access-date=6 June 2016}}</ref> लिस्प में एक ब्लॉक (एक प्रोग्न) के बराबर एक प्रथम श्रेणी की डेटा इकाई है और इसे अपना इंडेंटेशन स्तर देने से उस पर जोर देने में मदद मिलती है जबकि सी में एक ब्लॉक केवल वाक्य - विन्यास है। यह शैली 1960 और 1970 के दशक की कुछ [[ALGOL]] और [[XPL]] प्रोग्रामिंग भाषा पाठ्यपुस्तकों में भी पाई जा सकती है।<ref>{{cite book |author-last1=Baumann |author-first1=Richard |author-link1=:de:Richard Baumann (Mathematiker) |author-last2=Feliciano |author-first2=Manuel<!--, Jr.? --> |author-last3=Bauer |author-first3=Friedrich Ludwig |author-link3=Friedrich Ludwig Bauer |author-last4=Samelson |author-first4=Klaus |author-link4=Klaus Samelson |date=1964 |title=Introduction to ALGOL – A primer for the non-specialist, emphasizing the practical uses of the algorithmic language |series=Series in Automatic Computation |publisher=[[Prentice-Hall, Inc.]] |publication-place=Englewood Cliffs, New Jersey, USA |isbn=0-13-477828-6 |lccn=64-10740 |id=ark:/13960/t6qz35p37 |url=https://archive.org/details/introductiontoal00baum |access-date=2022-10-23}}</ref><ref>W. M. McKeeman, J. J. Horning, and D. B. Wortman, ''A Compiler Generator'', 1970, https://archive.org/details/compilergenerato00mcke</ref>{{discuss|editorial option in lieu of source}} हालांकि सीधे इंडेंटेशन से संबंधित नहीं है। जीएनयू कोडिंग शैली में कार्य के तर्कों की ब्रैकेटेड सूची से पहले एक स्थान भी सम्मिलित  है।
 
जबकि ( एक्स == वाई )  
<वाक्यविन्यास प्रकाश लैंग = सी>
{ कुछ ();  
 
    कुछ और ();
स्थैतिक चार *
    //...
 
अगर ( एक्स < 0 )     
concat (चार *s1, चार *s2)
    { प्रिंटफ ( "नकारात्मक" );    
 
        नकारात्मक ( एक्स );
{
    }
  जबकि (एक्स == वाई)
    अन्य
    {
    { प्रिंटफ ( "गैर-नकारात्मक" ); 
      कुछ ();
        अऋणात्मक ( एक्स );
      कुछ और ();
    }अंतिम बात ()
    }
   अंतिम बात ();
}
 
</वाक्यविन्यास हाइलाइट><ref name="gnu.org" />
 
यह शैली ऑलमैन शैली और व्हाईटस्मिथ शैली के लाभों को जोड़ती है, जिससे ब्लॉक से बाहर नहीं खड़े होने वाले धनुकोष्ठक के संभावित व्हाइटस्मिथ नुकसान को दूर किया जाता है। एक नुकसान यह है कि अंतिम कोष्ठक अब उस कथन के अनुरूप नहीं है जिससे यह अवधारणात्मक रूप से संबंधित है। एक और संभावित नुकसान यह है कि यह एक वैचारिक स्तर के लिए इंडेंट के दो दृश्य स्तरों का उपयोग करके स्थान को बर्बाद कर सकता है लेकिन वास्तव में यह संभावना नहीं है क्योंकि एकल-स्तरीय इंडेंटेशन वाले तंत्र  में प्रत्येक स्तर प्राय: कम से कम 4 रिक्त स्थान होता है जैसा कि 2 * जीएनयू शैली में 2 रिक्त स्थान।
यह शैली ऑलमैन शैली और व्हाईटस्मिथ शैली के लाभों को जोड़ती है, जिससे ब्लॉक से बाहर नहीं खड़े होने वाले धनुकोष्ठक के संभावित व्हाइटस्मिथ नुकसान को दूर किया जाता है। एक नुकसान यह है कि अंतिम कोष्ठक अब उस कथन के अनुरूप नहीं है जिससे यह अवधारणात्मक रूप से संबंधित है। एक और संभावित नुकसान यह है कि यह एक वैचारिक स्तर के लिए इंडेंट के दो दृश्य स्तरों का उपयोग करके स्थान को बर्बाद कर सकता है लेकिन वास्तव में यह संभावना नहीं है क्योंकि एकल-स्तरीय इंडेंटेशन वाले तंत्र  में प्रत्येक स्तर प्राय: कम से कम 4 रिक्त स्थान होता है जैसा कि 2 * जीएनयू शैली में 2 रिक्त स्थान।


Line 461: Line 344:
[[स्टीव मैककोनेल]] अपनी पुस्तक [[कोड पूर्ण]] में इस शैली का उपयोग करने के खिलाफ सलाह देते हैं। वह एक कोड नमूना चिह्नित करता है जो कोडिंग हॉरर आइकन के साथ इसका उपयोग करता है।विशेष रूप से खतरनाक कोड का प्रतीक है और कहता है कि यह पठनीयता को बाधित करता है।<ref name="mcconnell">{{cite book |title=Code Complete: A practical handbook of software construction |url=https://archive.org/details/codecomplete0000mcco |url-access=registration |last=McConnell |first=Steve |publisher=Microsoft Press |year=2004 |isbn=978-0-7356-1967-8 |location=Redmond, WA |pages=[https://archive.org/details/codecomplete0000mcco/page/746 746–747] |author-link=Steve McConnell}}</ref> लिनक्स कर्नेल कोडिंग शैली प्रलेखन भी इस शैली के खिलाफ दृढ़ता से अनुशंसा करता है, पाठकों से जीएनयू कोडिंग मानकों की एक प्रति को एक महान प्रतीकात्मक संकेत के रूप में जलाने का आग्रह करता है।<ref>{{cite web |title=Linux kernel coding style |url=https://www.kernel.org/doc/Documentation/process/coding-style.rst |access-date=1 January 2017}}</ref>
[[स्टीव मैककोनेल]] अपनी पुस्तक [[कोड पूर्ण]] में इस शैली का उपयोग करने के खिलाफ सलाह देते हैं। वह एक कोड नमूना चिह्नित करता है जो कोडिंग हॉरर आइकन के साथ इसका उपयोग करता है।विशेष रूप से खतरनाक कोड का प्रतीक है और कहता है कि यह पठनीयता को बाधित करता है।<ref name="mcconnell">{{cite book |title=Code Complete: A practical handbook of software construction |url=https://archive.org/details/codecomplete0000mcco |url-access=registration |last=McConnell |first=Steve |publisher=Microsoft Press |year=2004 |isbn=978-0-7356-1967-8 |location=Redmond, WA |pages=[https://archive.org/details/codecomplete0000mcco/page/746 746–747] |author-link=Steve McConnell}}</ref> लिनक्स कर्नेल कोडिंग शैली प्रलेखन भी इस शैली के खिलाफ दृढ़ता से अनुशंसा करता है, पाठकों से जीएनयू कोडिंग मानकों की एक प्रति को एक महान प्रतीकात्मक संकेत के रूप में जलाने का आग्रह करता है।<ref>{{cite web |title=Linux kernel coding style |url=https://www.kernel.org/doc/Documentation/process/coding-style.rst |access-date=1 January 2017}}</ref>
=== होर्स्टमैन शैली ===
=== होर्स्टमैन शैली ===
के एस. होर्स्टमैन द्वारा सह संगणकीय संकल्पना सी++ एसेंशियल्स का 1997 का संस्करण खुला कोष्ठक के समान रेखा पर एक ब्लॉक के पहले कथन को रखकर ऑलमैन शैली को अपनाता है। इस शैली का उपयोग जेन्सेन और विर्थ के पास्कल उपयोगकर्ता पुस्तिका और प्रतिवेदन के उदाहरणों में भी किया जाता है।<ref>{{cite book |first1=Kathleen |last1=Jensen |first2=Niklaus |last2=Wirth |title=PASCAL User Manual and Report |publisher=Springer-Verlag |year=1974}}</ref>
के एस. होर्स्टमैन द्वारा सह संगणकीय संकल्पना सी++ एसेंशियल्स का 1997 का संस्करण खुला कोष्ठक के समान रेखा पर एक ब्लॉक के पहले कथन को रखकर ऑलमैन शैली को अपनाता है। इस शैली का उपयोग जेन्सेन और विर्थ के पास्कल उपयोगकर्ता पुस्तिका और प्रतिवेदन के उदाहरणों में भी किया जाता है।
  जबकि (एक्स == वाई)


<वाक्यविन्यास प्रकाश लैंग = सी>
   कुछ और();
 
जबकि (एक्स == वाई)
 
{   कुछ();
    कुछ और();
     //...
     //...
     अगर (एक्स <0)
     अगर (एक्स <0)
Line 477: Line 356:
     {प्रिंटफ (गैर-नकारात्मक);
     {प्रिंटफ (गैर-नकारात्मक);
         अऋणात्मक (एक्स);
         अऋणात्मक (एक्स);
     }
     } अंतिम बात ();
}
अंतिम बात ();
 
</वाक्यविन्यास हाइलाइट>
 
यह शैली K&R शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके ऑलमैन शैली के लाभों को जोड़ती है। हालाँकि 2003 का संस्करण अब ऑलमैन शैली का उपयोग करता है।<ref>[http://www.horstmann.com/bigcpp/styleguide.html Horstmann Style Guide]</ref>
यह शैली K&R शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके ऑलमैन शैली के लाभों को जोड़ती है। हालाँकि 2003 का संस्करण अब ऑलमैन शैली का उपयोग करता है।<ref>[http://www.horstmann.com/bigcpp/styleguide.html Horstmann Style Guide]</ref>
=== पिको शैली ===
=== पिको शैली ===
यह शैली [[पिको (प्रोग्रामिंग भाषा)]] भाषा में इसके डिजाइनरों द्वारा सबसे अधिक उपयोग की जाती है। पिको में वापिस कथन का अभाव है और समापक के बजाय अर्धविराम को कथन विभाजक के रूप में उपयोग करता है। यह इस वाक्यविन्यास को उत्पन्न करता है:<ref>{{Cite journal|last=Ohno|first=Asako|date=2013|title=A methodology to teach exemplary coding style considering students' coding style feature contains fluctuations|journal=2013 IEEE Frontiers in Education Conference (FIE) |pages=1908–1910|doi=10.1109/fie.2013.6685167|isbn=9781467352611 |s2cid=28385526}}</ref>
यह शैली [[पिको (प्रोग्रामिंग भाषा)]] भाषा में इसके डिजाइनरों द्वारा सबसे अधिक उपयोग की जाती है। पिको में वापिस कथन का अभाव है और समापक के बजाय अर्धविराम को कथन विभाजक के रूप में उपयोग करता है। यह इस वाक्यविन्यास को उत्पन्न करता है:<ref>{{Cite journal|last=Ohno|first=Asako|date=2013|title=A methodology to teach exemplary coding style considering students' coding style feature contains fluctuations|journal=2013 IEEE Frontiers in Education Conference (FIE) |pages=1908–1910|doi=10.1109/fie.2013.6685167|isbn=9781467352611 |s2cid=28385526}}</ref>
<!--no geshi support for pico-->
<पूर्व>


सामान (एन):
सामान (एन):


{एक्स: 3 * एन;
{एक्स: 3 * एन;
  वाई: डू स्टफ (एक्स);
वाई: डू स्टफ (एक्स);
  वाई + एक्स}
 
</पूर्व>
वाई + एक्स}


फायदे और नुकसान के एंड आर शैली के साथ स्क्रीन रियल एस्टेट को बचाने के समान हैं। एक अतिरिक्त लाभ यह है कि प्रारंभिक और समापन धनुकोष्ठक K&R शैली के सापेक्ष अनुप्रयोग में सुसंगत हैं (दोनों कोड की एक पंक्ति के साथ स्थान साझा करते हैं) जहां एक कोष्ठक कोड की एक पंक्ति के साथ स्थान साझा करता है और एक कोष्ठक में केवल एक पंक्ति होती है।
फायदे और नुकसान के एंड आर शैली के साथ स्क्रीन रियल एस्टेट को बचाने के समान हैं। एक अतिरिक्त लाभ यह है कि प्रारंभिक और समापन धनुकोष्ठक K&R शैली के सापेक्ष अनुप्रयोग में सुसंगत हैं (दोनों कोड की एक पंक्ति के साथ स्थान साझा करते हैं) जहां एक कोष्ठक कोड की एक पंक्ति के साथ स्थान साझा करता है और एक कोष्ठक में केवल एक पंक्ति होती है।
Line 501: Line 372:
=== रैटलिफ शैली ===
=== रैटलिफ शैली ===
प्रोग्रामर एट वर्क पुस्तक में<ref name=lammers>{{cite book |last=Lammers |first=Susan |title=Programmers at Work |year=1986 |publisher=Microsoft Press |isbn=978-0-914845-71-3 |url-access=registration |url=https://archive.org/details/programmersatwor00lamm_0 }}</ref> सी. वेन रैटलिफ़ ने नीचे दी गई शैली का उपयोग करते हुए चर्चा की। शैली 1TBS की तरह शुरू होती है लेकिन फिर नेस्टेड ब्लॉक के इंडेंटेशन के साथ समापन कोष्ठक रेखा ऊपर हो जाती है। रैटलिफ़ लोकप्रिय [[dBase]]-II और -III [[चौथी पीढ़ी की प्रोग्रामिंग भाषा]]ओं के पीछे मूल प्रोग्रामर थे। उन्होंने संकेत दिया कि यह मूल रूप से [[डिजिटल अनुसंधान]] इंक से सामग्री में प्रलेखित था। इस शैली को कभी-कभी बैनर शैली कहा जाता है<ref name=pattee>{{cite web |last1=Pattee |first1=Jim |title=Artistic Style 2.05 Documentation |url=http://astyle.sourceforge.net/astyle.html |website=Artistic Style |access-date=24 April 2015}}</ref> संभवतः एक खंभे से लटके हुए बैनर के समानता के लिए। इस शैली में जो कि व्हाईटस्मिथ्स शैली के लिए है जैसे के एंड आर ऑलमैन के लिए है। समापन नियंत्रण को सूची में अंतिम आइटम के समान ही इंडेंट किया गया है (और इस प्रकार उचित रूप से प्रमुखता खो देता है)<ref name="mcconnell" />शैली कुछ लोगों के लिए विज़ुअल स्कैनिंग को आसान बना सकती है क्योंकि किसी भी ब्लॉक के हेडर ही उस स्तर पर एक्सडेंट होते हैं (सिद्धांत यह है कि पूर्व ब्लॉक का समापन नियंत्रण K&R में अगले ब्लॉक हेडर के दृश्य प्रवाह के साथ हस्तक्षेप करता है और ऑलमैन शैली)। सॉफ्टवेयर उपकरण्स में रैटफोर कोड में कर्निघन और प्लेगर इस शैली का उपयोग करते हैं।<ref>{{cite book |first1=Brian W. |last1=Kernighan |first2=P. J. |last2=Plauger |title=Software Tools |url=https://archive.org/details/softwaretools00kern |url-access=registration |publisher=Addison-Wesley |year=1976}}</ref>
प्रोग्रामर एट वर्क पुस्तक में<ref name=lammers>{{cite book |last=Lammers |first=Susan |title=Programmers at Work |year=1986 |publisher=Microsoft Press |isbn=978-0-914845-71-3 |url-access=registration |url=https://archive.org/details/programmersatwor00lamm_0 }}</ref> सी. वेन रैटलिफ़ ने नीचे दी गई शैली का उपयोग करते हुए चर्चा की। शैली 1TBS की तरह शुरू होती है लेकिन फिर नेस्टेड ब्लॉक के इंडेंटेशन के साथ समापन कोष्ठक रेखा ऊपर हो जाती है। रैटलिफ़ लोकप्रिय [[dBase]]-II और -III [[चौथी पीढ़ी की प्रोग्रामिंग भाषा]]ओं के पीछे मूल प्रोग्रामर थे। उन्होंने संकेत दिया कि यह मूल रूप से [[डिजिटल अनुसंधान]] इंक से सामग्री में प्रलेखित था। इस शैली को कभी-कभी बैनर शैली कहा जाता है<ref name=pattee>{{cite web |last1=Pattee |first1=Jim |title=Artistic Style 2.05 Documentation |url=http://astyle.sourceforge.net/astyle.html |website=Artistic Style |access-date=24 April 2015}}</ref> संभवतः एक खंभे से लटके हुए बैनर के समानता के लिए। इस शैली में जो कि व्हाईटस्मिथ्स शैली के लिए है जैसे के एंड आर ऑलमैन के लिए है। समापन नियंत्रण को सूची में अंतिम आइटम के समान ही इंडेंट किया गया है (और इस प्रकार उचित रूप से प्रमुखता खो देता है)<ref name="mcconnell" />शैली कुछ लोगों के लिए विज़ुअल स्कैनिंग को आसान बना सकती है क्योंकि किसी भी ब्लॉक के हेडर ही उस स्तर पर एक्सडेंट होते हैं (सिद्धांत यह है कि पूर्व ब्लॉक का समापन नियंत्रण K&R में अगले ब्लॉक हेडर के दृश्य प्रवाह के साथ हस्तक्षेप करता है और ऑलमैन शैली)। सॉफ्टवेयर उपकरण्स में रैटफोर कोड में कर्निघन और प्लेगर इस शैली का उपयोग करते हैं।<ref>{{cite book |first1=Brian W. |last1=Kernighan |first2=P. J. |last2=Plauger |title=Software Tools |url=https://archive.org/details/softwaretools00kern |url-access=registration |publisher=Addison-Wesley |year=1976}}</ref>
<वाक्यविन्यास प्रकाश लैंग = सी>
  // सी में
  // सी में
  के लिए (i = 0; i <10; i++) {
  के लिए (i = 0; i <10; i++) {
Line 512: Line 381:
         }
         }
     }
     }
</वाक्यविन्यास हाइलाइट>
या मार्कअप भाषा में...
 
<nowiki>{|</nowiki>
 
|-
 
| बहुत सारी चीजें...
 
अधिक सामान


या मार्कअप भाषा में...
|| छोटी लाइन के लिए वैकल्पिक || वगैरह।
 
|}
 
<nowiki>{|</nowiki>


<वाक्यविन्यास हाइलाइट लैंग = html4सख्त>
{|
|-
|-
| lots of stuff...
 
      more stuff
... वगैरह
      || alternative for short lines || etc.
 
|}
|}


Line 528: Line 407:
... etc
... etc
|}
|}
</वाक्यविन्यास हाइलाइट>


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


<वाक्यविन्यास प्रकाश लैंग = सी>
// सी में ( i = 0 ; i < 10 ; i ++ )
 
{ अगर ( मैं % 2 == 0 ) 


// सी में
{ कुछ करो ( मैं );}


के लिए (i = 0; i <10; i++)
अन्य       
    {अगर (मैं% 2 == 0)
 
        {कुछ करो(i);}
{ कुछ और करें ( i ); (करो-तीसरी-चीज़ i)))
    अन्य
 
        {कुछ और करें(i);
<nowiki>#</nowiki> पायथन में
        doThirdThing(i);}}
</वाक्यविन्यास हाइलाइट>


<वाक्यविन्यास लैंग = अजगर>
i के लिए  श्रेणी में ( 10 ): यदि i % 2 == 0 : (करो-कुछ-और मैं)
# पायथन में
मैं सीमा में (10) के लिए:
    अगर मैं% 2 == 0:
        do_something (मैं)
    अन्य:
        do_something_else(मैं)
        do_third_thing(i)
</वाक्यविन्यास हाइलाइट>


<वाक्यविन्यास प्रकाश लैंग = लिस्प>
(करो-तीसरी-चीज़ i)))
;; लिस्प में
;; लिस्प में
(डॉटाइम्स (मैं 10)
(डॉटाइम्स (मैं 10)
Line 563: Line 433:
             (करो-कुछ-और मैं)
             (करो-कुछ-और मैं)
             (करो-तीसरी-चीज़ i))))
             (करो-तीसरी-चीज़ i))))
</वाक्यविन्यास हाइलाइट>
=== हास्केल शैली ===
=== हास्केल शैली ===
[[हास्केल (प्रोग्रामिंग भाषा)]] लेआउट धनुकोष्ठक के स्थान को वैकल्पिक बना सकता है हालांकि भाषा में धनुकोष्ठक और अर्धविरामों की अनुमति है।<ref>{{cite web |url=https://www.haskell.org/onlinereport/lexemes.html |title=The Haskell 98 Report |access-date=3 March 2016 |website=haskell.org}}</ref> नीचे दिए गए दो खंड संकलक के लिए समान रूप से स्वीकार्य हैं:
[[हास्केल (प्रोग्रामिंग भाषा)]] लेआउट धनुकोष्ठक के स्थान को वैकल्पिक बना सकता है हालांकि भाषा में धनुकोष्ठक और अर्धविरामों की अनुमति है।<ref>{{cite web |url=https://www.haskell.org/onlinereport/lexemes.html |title=The Haskell 98 Report |access-date=3 March 2016 |website=haskell.org}}</ref> नीचे दिए गए दो खंड संकलक के लिए समान रूप से स्वीकार्य हैं:
 
ब्रेसलेस = करना
<वाक्यविन्यास लैंग = हास्केल>
  पाठ <- सामग्री प्राप्त करें
 
  होने देना
कोष्ठकलेस = करना
    फर्स्टवर्ड = हेड $ शब्द टेक्स्ट    
  पाठ <- सामग्री प्राप्त करें
    bigWord = मैप toUpper FirstWord  
  होने देना
  putStrLn बिगवर्ड  
    फर्स्टवर्ड = हेड $ शब्द टेक्स्ट
    bigWord = मैप toUpper FirstWord
कंजूस = करना
  putStrLn बिगवर्ड
  { पाठ <- getContents  
 
  ; होने देना  
कंजूस = करना
      { फर्स्टवर्ड = हेड $ शब्द टेक्स्ट    
  {पाठ <- getContents
      ; bigWord = मैप toUpper FirstWord    
  ; होने देना
      }
      { फर्स्टवर्ड = हेड $ शब्द टेक्स्ट
  ; putStrLn बिगवर्ड  
      ; bigWord = मैप toUpper FirstWord
हास्केल में लेआउट धनुकोष्ठक को बदल सकता है। प्राय: [[प्रक्रियात्मक प्रोग्रामिंग]] के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैं<code>do</code>वर्गों और सामान्य रूप से कार्यक्रम पाठ लेकिन शैली का उपयोग प्राय: सूचियों, अभिलेखों और अन्य वाक्य-विन्यास तत्वों के लिए किया जाता है जो कोष्ठक या धनुकोष्ठक की कुछ जोड़ी से बना होता है जो अल्पविराम या अर्धविराम से अलग होते हैं।<ref>{{cite web |url=http://learnyouahaskell.com/making-our-own-types-and-typeclasses |title=Making Our Own Types and Typeclasses |access-date=3 February 2016 |website=learnyouahaskell.com |last=Lipovača |first=Miran}}</ref> यदि कोड कीवर्ड का अनुसरण करता है<code>where</code>, <code>let</code>या <code>of</code>धनुकोष्ठक और अर्धविराम छोड़ देता है तो इंडेंटेशन महत्वपूर्ण है।<ref>Haskell Report 1.2 (1992), p.131 B.4 "Layout"</ref>
      }
  ; putStrLn बिगवर्ड
  }
</वाक्यविन्यास हाइलाइट>
 
हास्केल में लेआउट धनुकोष्ठक को बदल सकता है।
 
प्राय: [[प्रक्रियात्मक प्रोग्रामिंग]] के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैं<code>do</code>वर्गों और सामान्य रूप से कार्यक्रम पाठ लेकिन शैली का उपयोग प्राय: सूचियों, अभिलेखों और अन्य वाक्य-विन्यास तत्वों के लिए किया जाता है जो कोष्ठक या धनुकोष्ठक की कुछ जोड़ी से बना होता है जो अल्पविराम या अर्धविराम से अलग होते हैं।<ref>{{cite web |url=http://learnyouahaskell.com/making-our-own-types-and-typeclasses |title=Making Our Own Types and Typeclasses |access-date=3 February 2016 |website=learnyouahaskell.com |last=Lipovača |first=Miran}}</ref> यदि कोड कीवर्ड का अनुसरण करता है<code>where</code>, <code>let</code>या <code>of</code>धनुकोष्ठक और अर्धविराम छोड़ देता है तो इंडेंटेशन महत्वपूर्ण है।<ref>Haskell Report 1.2 (1992), p.131 B.4 "Layout"</ref>
=== एपीएल शैली ===
=== एपीएल शैली ===
प्राय: एपीएल कितना संक्षिप्त है इसके उदाहरण के लिए यहां जीवन का नाटक के लिए स्टेप कार्य  का कार्यान्वयन है:
प्राय: एपीएल कितना संक्षिप्त है इसके उदाहरण के लिए यहां जीवन का नाटक के लिए स्टेप कार्य  का कार्यान्वयन है:
<nowiki><syntaxhighlight lang=एपीएल ></nowiki>


जीवन←{⊃1⍵∨.∧3 4=+/+⌿¯1 0 1∘.⊖¯1 0 1⌽¨⊂⍵}
जीवन←{⊃1⍵∨.∧3 4=+/+⌿¯1 0 1∘.⊖¯1 0 1⌽¨⊂⍵}
</वाक्यविन्यास हाइलाइट>


[[एपीएल (प्रोग्रामिंग भाषा)]] शैली सी एपीएल कोड की संक्षिप्त शैली जैसा दिखता है और प्राय: उनके कार्यान्वयन में उपयोग किया जाता है।<ref>{{cite web |url=https://www.jsoftware.com/ioj/iojATW.htm |title=The J Incunabulum |access-date=19 May 2022 |website=jsoftware.com}}</ref> इस शैली का नेतृत्व [[आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक)]] द्वारा किया गया था और इसका उपयोग के (प्रोग्रामिंग भाषा) आर्थर की अपनी परियोजना के कार्यान्वयन में किया जाता है। J (प्रोग्रामिंग भाषा ) प्रोग्रामिंग भाषा  को भी इस शैली में लागू किया गया है। विशेष रूप से एपीएल के सभी कार्यान्वयन C की इस शैली का उपयोग नहीं करते हैं अर्थात् जीएनयू एपीएल और Dyalog एपीएल ।
[[एपीएल (प्रोग्रामिंग भाषा)]] शैली सी एपीएल कोड की संक्षिप्त शैली जैसा दिखता है और प्राय: उनके कार्यान्वयन में उपयोग किया जाता है।<ref>{{cite web |url=https://www.jsoftware.com/ioj/iojATW.htm |title=The J Incunabulum |access-date=19 May 2022 |website=jsoftware.com}}</ref> इस शैली का नेतृत्व [[आर्थर व्हिटनी (कंप्यूटर वैज्ञानिक)]] द्वारा किया गया था और इसका उपयोग के (प्रोग्रामिंग भाषा) आर्थर की अपनी परियोजना के कार्यान्वयन में किया जाता है। J (प्रोग्रामिंग भाषा ) प्रोग्रामिंग भाषा  को भी इस शैली में लागू किया गया है। विशेष रूप से एपीएल के सभी कार्यान्वयन C की इस शैली का उपयोग नहीं करते हैं अर्थात् जीएनयू एपीएल और Dyalog एपीएल ।
Line 616: Line 472:
समापन कोष्ठक के बाद जोड़े गए इनरेखा टिप्पणियों का उपयोग करने का दूसरा तरीका है:
समापन कोष्ठक के बाद जोड़े गए इनरेखा टिप्पणियों का उपयोग करने का दूसरा तरीका है:


<वाक्यविन्यास प्रकाश लैंग = सी>
के लिए (int i = 0; i <कुल; i++) {
    फू (बार);
} // के लिए (मैं)
</वाक्यविन्यास हाइलाइट>


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


अगर (एक्स <0) {
बार ( फू );
  बार (फू);
} // अगर (एक्स <0)


</वाक्यविन्यास हाइलाइट>
} // अगर (एक्स <0)


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


<वाक्यविन्यास प्रकाश लैंग = सी>
    वूप्स ( बार ); /* 10 बार दोहराया, i 0 से 9 तक */  
 
{
के लिए (int i = 0; i <10; i++)
    केवल_वन्स (); /* प्रोग्रामर ने इसे 10 बार करने का इरादा किया था */  
    वूप्स (बार); /* 10 बार दोहराया, i 0 से 9 तक */
{
    केवल एकबार(); /* प्रोग्रामर ने इसे 10 बार करने का इरादा किया था */
} // for (i) ← यह टिप्पणी अब मान्य नहीं हैऔर बहुत भ्रामक है!
 
</वाक्यविन्यास हाइलाइट>


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



Revision as of 21:01, 16 March 2023

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

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

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

यौगिक कथनो में कोष्ठक स्थान

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

कोष्ठक स्थान शैलियों
जबकि ( एक्स == वाई )
{
    कुछ ();
    कुछ और ();
}
सभी मर्द
जबकि ( एक्स == वाई ) {
    कुछ ();
    कुछ और ();
}
के एंड आर
जबकि ( एक्स == वाई )
  {
    कुछ (); 
    कुछ और (); 
  }
जीएनयू
जबकि ( एक्स == वाई )
    {
    कुछ ();
    कुछ और ();
    }
गोरे लोग
जबकि ( एक्स == वाई )
{ कुछ ();   
    कुछ और ();
}
होर्स्टमैन
जबकि ( एक्स == वाई )
{ कुछ ();   
    कुछ और (); } 
पिको
जबकि ( एक्स == वाई ) {
    कुछ ();
    कुछ और ();
    }
रैटलिफ
जबकि ( एक्स == वाई )
  { कुछ (); 
    कुछ और (); } 
तुतलाना
# परिभाषित डब्ल्यू (सी, बी) {जबकि (सी) {बी}} डब्ल्यू ( एक्स == वाई , एस (); से ();) एपीएल

टैब, रिक्त स्थान और इंडेंटेशन का आकार

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

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

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

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

उपकरण

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

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

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

शैलियाँ

के एंड आर शैली

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

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

  इंट मेन ( इंट एआरजीसी , चार * एआरजीवी [])    
{
    ...
    जबकि ( एक्स == वाई ) {    
        कुछ ();
        कुछ और ();

        अगर ( some_error ) 
            do_सही (); // K&R में सिंगल-स्टेटमेंट ब्लॉक में ब्रेसेस नहीं होते हैं। अन्य 
        
            जारी_जैसा_सामान्य ();
    }

    अंतिम बात ();
    ...
}

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

सी भाषा के पुराने संस्करणों में तर्क प्रकारों को बाद की पंक्ति पर घोषित करने की आवश्यकता होती है (यानी कार्य के शीर्षलेख के ठीक बाद):

   /* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी स्टाइल */
इंट मेन ( एआरजीसी , एआरजीवी )  
    इंट एर्गसी ;   
    चार * एआरजीवी [];  
{
    ...
}

वैरिएंट: 1TBS (OTBS)

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

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

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

   शून्य चेकनेगेटिव ( एक्स ) {  
    अगर ( एक्स < 0 ) {    
        डालता है ( "नकारात्मक" );
    } और {  
        अऋणात्मक ( एक्स )

द वन ट्रू कोष्ठक शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है[11]जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।[5]

संस्करण: लिनक्स कर्नेल

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

कर्नेल शैली इंडेंटेशन के लिए टैब का विश्राम स्थान का उपयोग करती है (टैब स्टॉप प्रत्येक 8 वर्ण सेट करता है)। किसी कार्य के मध्यम धनुकोष्ठक को खोलना कार्य हेडर के बाद रेखा की शुरुआत में जाता है। कोई भी अन्य खुला मध्यम धनुकोष्ठक उसी रेखा पर चलते हैं जिस पर संबंधित कथन एक जगह द्वारा अलग किया जाता है। ए में स्तर स्विचबयान संलग्न ब्लॉक के साथ गठबंधन कर रहे हैं (इंडेंट का केवल एक स्तर है)। रेखा की लंबाई 80 वर्णों तक सीमित हुआ करती थी – इसे 2020 में बढ़ाकर 100 कर दिया गया था लेकिन मूल सीमा को अभी भी पसंद किया जाता है।[13] यौगिक कथन के एकल-विधान शरीर को मध्यम धनुकोष्ठक से घिरा नहीं होना चाहिए। यदि एक में एक या एक से अधिक सब कथनif-else कथन में धनुकोष्ठक की आवश्यकता होती है तो दोनों सब कथन को मध्यम धनुकोष्ठक के अंदर लपेटा जाना चाहिए:

  इंट पावर ( इंट एक्स , इंट वाई )   
        { इंट परिणाम ; 

        अगर ( वाई < 0 ) {    
                परिणाम = 0 ;  
        } और {  
                परिणाम = 1 ;  
                जबकि ( वाई -- > 0 )   
                        परिणाम * = एक्स ;  
        }
        वापसी परिणाम ; 

संस्करण: अनिवार्य धनुकोष्ठक

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

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

संस्करण: जावा

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

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

संस्करण: स्ट्रॉस्ट्रुप

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

ऊपर दिए गए वेरिएंट के विपरीत स्ट्रॉस्ट्रुप एक कडलड एल्स का उपयोग नहीं करता है। इस प्रकार स्ट्राउस्ट्रप लिखेंगे

   अगर (एक्स <0) {
       पुट (नकारात्मक);
       नकारात्मक (एक्स);
   }
   अन्य {
       पुट (गैर-नकारात्मक);
       अऋणात्मक (एक्स);
   }

स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है:

   वर्ग वेक्टर {
   जनता:
       वेक्टर (इंट एस): एलेम (नया डबल [एस]), एसजेड (एस) {} // एक वेक्टर का निर्माण
       डबल और ऑपरेटर [] (इंट आई) {वापसी तत्व [i]; } // एलिमेंट एक्सेस: सबस्क्रिप्टिंग
       int आकार () {वापसी sz; }
   निजी:
       डबल * एलिम; // तत्वों के लिए सूचक
       इंट एसजेड; // तत्वों की संख्या
   };

स्ट्रॉस्ट्रुप स्तर को इंडेंट नहीं करता है public:और private: इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला कोष्ठक एक नई रेखा पर शुरू होती है एक क्लास की खुला कोष्ठक उसी रेखा पर होती है जिस पर क्लास का नाम होता है।

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

वैरिएंट: बीएसडी केएनएफ

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

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

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

इसके अतिरिक्त कार्य कॉल कोष्ठक से पहले एक स्थान का उपयोग नहीं करते हैं हालांकि सी-भाषा मूल कथन जैसे if, while, do, switch और return करें (sthiti में जहां return 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 ); 
}

ऑलमैन शैली

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

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

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

अंतिम बात ()

यह शैली पास्कल (प्रोग्रामिंग भाषा) भाषाओं और कारोबार-एसक्यूएल द्वारा उपयोग किए जाने वाले मानक इंडेंटेशन के समान है जहां धनुकोष्ठक कीवर्ड के बराबर हैं I begin और end.

(* पास्कल में ऑलमैन कोड इंडेंटेशन स्टाइल का उदाहरण *) 
प्रक्रिया  dosomething ( x,y :पूर्णांक) ; 
प्रारंभ करें 
    जबकि  x  =  y  कुछ प्रारंभ करें 
    () ; कुछ और () ; अंत ;

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

उदाहरण के लिए निम्नलिखित अभी भी वाक्य रचनात्मक रूप से सही है:

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

जैसा यह है:

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

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

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

{

 कुछ();
   कुछ और();

}

इस तरह भी सशर्त संकलन के साथ

 इंट सी ; #ifdef HAS_GETCH 
जबकि (( सी = गेटच ()) ! = ईओएफ )         
#else 
जबकि (( सी = getchar ()) ! = ईओएफ )         
#endif 
{    
        do_something ( सी );

वैरिएंट: ऑलमैन-8

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

गोरे लोग शैली

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

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

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

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

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

   {
   कुछ();
   कुछ और();
   }अंतिम बात ();

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

एक उदाहरण:

अगर ( डेटा ! = न्यूल एंड & रेस > 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 ( "आंतरिक त्रुटि!" );
    गोटो गलती ; 
    }

else if elifप्रीप्रोसेसर स्टेटमेंट की तरह स्टेटमेंट के रूप में माना जाता है।

जीएनयू शैली

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

रिचर्ड स्टालमैन द्वारा लोकप्रिय लेआउट लिस्प (प्रोग्रामिंग भाषा) कोड लिखने की उनकी पृष्ठभूमि से प्रभावित हो सकता है।[25] लिस्प में एक ब्लॉक (एक प्रोग्न) के बराबर एक प्रथम श्रेणी की डेटा इकाई है और इसे अपना इंडेंटेशन स्तर देने से उस पर जोर देने में मदद मिलती है जबकि सी में एक ब्लॉक केवल वाक्य - विन्यास है। यह शैली 1960 और 1970 के दशक की कुछ ALGOL और XPL प्रोग्रामिंग भाषा पाठ्यपुस्तकों में भी पाई जा सकती है।[26][27][discuss] हालांकि सीधे इंडेंटेशन से संबंधित नहीं है। जीएनयू कोडिंग शैली में कार्य के तर्कों की ब्रैकेटेड सूची से पहले एक स्थान भी सम्मिलित है।

जबकि ( एक्स == वाई )   
{ कुछ ();   
    कुछ और ();
    //... 
अगर ( एक्स < 0 )       
    { प्रिंटफ ( "नकारात्मक" );   
        नकारात्मक ( एक्स );
    }
    अन्य
    { प्रिंटफ ( "गैर-नकारात्मक" );   
        अऋणात्मक ( एक्स );
    }अंतिम बात ()

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

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

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

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

होर्स्टमैन शैली

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

  जबकि (एक्स == वाई)
 कुछ और();
   //...
   अगर (एक्स <0)
   {प्रिंटफ (नकारात्मक);
       नकारात्मक (एक्स);
   }
   अन्य
   {प्रिंटफ (गैर-नकारात्मक);
       अऋणात्मक (एक्स);
   } अंतिम बात ();

यह शैली K&R शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके ऑलमैन शैली के लाभों को जोड़ती है। हालाँकि 2003 का संस्करण अब ऑलमैन शैली का उपयोग करता है।[30]

पिको शैली

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

सामान (एन):

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

वाई + एक्स}

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

रैटलिफ शैली

प्रोग्रामर एट वर्क पुस्तक में[32] सी. वेन रैटलिफ़ ने नीचे दी गई शैली का उपयोग करते हुए चर्चा की। शैली 1TBS की तरह शुरू होती है लेकिन फिर नेस्टेड ब्लॉक के इंडेंटेशन के साथ समापन कोष्ठक रेखा ऊपर हो जाती है। रैटलिफ़ लोकप्रिय dBase-II और -III चौथी पीढ़ी की प्रोग्रामिंग भाषाओं के पीछे मूल प्रोग्रामर थे। उन्होंने संकेत दिया कि यह मूल रूप से डिजिटल अनुसंधान इंक से सामग्री में प्रलेखित था। इस शैली को कभी-कभी बैनर शैली कहा जाता है[33] संभवतः एक खंभे से लटके हुए बैनर के समानता के लिए। इस शैली में जो कि व्हाईटस्मिथ्स शैली के लिए है जैसे के एंड आर ऑलमैन के लिए है। समापन नियंत्रण को सूची में अंतिम आइटम के समान ही इंडेंट किया गया है (और इस प्रकार उचित रूप से प्रमुखता खो देता है)[23]शैली कुछ लोगों के लिए विज़ुअल स्कैनिंग को आसान बना सकती है क्योंकि किसी भी ब्लॉक के हेडर ही उस स्तर पर एक्सडेंट होते हैं (सिद्धांत यह है कि पूर्व ब्लॉक का समापन नियंत्रण K&R में अगले ब्लॉक हेडर के दृश्य प्रवाह के साथ हस्तक्षेप करता है और ऑलमैन शैली)। सॉफ्टवेयर उपकरण्स में रैटफोर कोड में कर्निघन और प्लेगर इस शैली का उपयोग करते हैं।[34]

// सी में
के लिए (i = 0; i <10; i++) {
    अगर (मैं% 2 == 0) {
        कुछ करो (मैं);
        }
    अन्य {
        कुछ और करो (i);
        }
    }

या मार्कअप भाषा में...

{|

|-

| बहुत सारी चीजें...

अधिक सामान

|| छोटी लाइन के लिए वैकल्पिक || वगैरह।

|}

{|

|-

... वगैरह

|}

... etc

लिस्प शैली

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

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

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

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

अन्य

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

# पायथन में

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

(करो-तीसरी-चीज़ i)))

लिस्प में

(डॉटाइम्स (मैं 10)

   (अगर (= (रेम आई 2) 0)
       (करो-कुछ मैं)
       (प्रोग्न
           (करो-कुछ-और मैं)
           (करो-तीसरी-चीज़ i))))

हास्केल शैली

हास्केल (प्रोग्रामिंग भाषा) लेआउट धनुकोष्ठक के स्थान को वैकल्पिक बना सकता है हालांकि भाषा में धनुकोष्ठक और अर्धविरामों की अनुमति है।[35] नीचे दिए गए दो खंड संकलक के लिए समान रूप से स्वीकार्य हैं:

ब्रेसलेस = करना  
  पाठ <- सामग्री प्राप्त करें  
  होने देना
    फर्स्टवर्ड = हेड $ शब्द टेक्स्ट     
    bigWord = मैप toUpper FirstWord    
  putStrLn बिगवर्ड 

कंजूस = करना  
  { पाठ <- getContents   
  ; होने देना 
      { फर्स्टवर्ड = हेड $ शब्द टेक्स्ट      
      ; bigWord = मैप toUpper FirstWord     
      }
  ; putStrLn बिगवर्ड   

हास्केल में लेआउट धनुकोष्ठक को बदल सकता है। प्राय: प्रक्रियात्मक प्रोग्रामिंग के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैंdoवर्गों और सामान्य रूप से कार्यक्रम पाठ लेकिन शैली का उपयोग प्राय: सूचियों, अभिलेखों और अन्य वाक्य-विन्यास तत्वों के लिए किया जाता है जो कोष्ठक या धनुकोष्ठक की कुछ जोड़ी से बना होता है जो अल्पविराम या अर्धविराम से अलग होते हैं।[36] यदि कोड कीवर्ड का अनुसरण करता हैwhere, letया ofधनुकोष्ठक और अर्धविराम छोड़ देता है तो इंडेंटेशन महत्वपूर्ण है।[37]

एपीएल शैली

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

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

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

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

अन्य विचार

ब्लॉक का ट्रैक खोना

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

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

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

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

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


के लिए ( int i = 0 ; i < कुल ; i ++ ) {

    फू ( बार );
} // के लिए (मैं) 

अगर ( एक्स < 0 ) {

बार ( फू );

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

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

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

वक्तव्य सम्मिलन

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

 के लिए ( इंट आई = 0 ; मैं < 10 ; मैं ++ )        
    वूप्स ( बार ); /* 10 बार दोहराया, i 0 से 9 तक */   
{
    केवल_वन्स (); /* प्रोग्रामर ने इसे 10 बार करने का इरादा किया था */   
} // for (i) ← यह टिप्पणी अब मान्य नहीं है, और बहुत भ्रामक है!

K&R शैली कंट्रोल कथन और खुला कोष्ठक को एक ही रेखा पर रखकर इस समस्या से बचा जाता है।


यह भी देखें

संदर्भ

  1. Zawinski, Jamie (2000). "Tabs versus Spaces: An Eternal Holy War". Retrieved 6 June 2016.
  2. "WordPress Coding Standards". Retrieved 6 June 2016.
  3. Hoffa, Felipe (2017-07-26). "400,000 GitHub repositories, 1 billion files, 14 terabytes of code: Spaces or Tabs?". Medium (in English). Retrieved 2019-07-09.
  4. Miara, Richard J.; Musselman, Joyce A.; Navarro, Juan A. & Shneiderman, Ben (November 1983). "Program Indentation and Comprehensibility" (PDF). Communications of the ACM. 26 (11): 861–867. doi:10.1145/182.358437. S2CID 11767796. Retrieved 3 August 2017.
  5. 5.0 5.1 5.2 "The Jargon File". 4.4.7. 29 December 2003. Retrieved 18 August 2014.
  6. Darwin, Ian F. (1988). Checking C programs with Lint. California: O'Reilly and Assosciates. p. 51. ISBN 9780937175309.
  7. 7.0 7.1 "1TBS".
  8. "Java Style Guide". Archived from the original on 2018-07-12. Using either "Egyptian" curly braces or C-style curly braces is acceptable
  9. "Egyptian brackets". Foldoc. A humourous [sic] term for K&R indent style, referring to the "one hand up in front, one down behind" pose
  10. "Google JavaScript Style Guide". Braces follow the Kernighan and Ritchie style ("Egyptian brackets") for nonempty blocks and block-like constructs
  11. 11.0 11.1 "Brace styles and JavaScript". 7 January 2013. Retrieved 8 November 2018.
  12. A detailed description of the style is given at kernel.org.
  13. Larabel, Michael. "The Linux Kernel Deprecates The 80 Character Line Coding Style". Phoronix. Phoronix Media. Retrieved 1 May 2022.
  14. Reddy, Achut (30 March 2000). "Java Coding Style Guide" (PDF). Sun Microsystems. Archived from the original (PDF) on 28 February 2006. Retrieved 30 May 2008.
  15. "Java Code Conventions" (PDF). Sun Microsystems. 12 September 1997. Archived from the original (PDF) on 13 May 2008. Retrieved 30 May 2008.
  16. "Code Conventions for the Java Programming Language". Sun Microsystems. 20 March 1997. Retrieved 30 May 2008.
  17. Stroustrup, Bjarne (September 2010). "PPP Style Guide" (PDF).
  18. Stroustrup, Bjarne. "C++ Core Guidelines". GitHub. Retrieved 3 November 2018.
  19. 19.0 19.1 19.2 Shannon, Bill (19 August 1996). "C Style and Coding Standards for SunOS" (PDF). 1.8. Sun Microsystems, Inc. Retrieved 15 June 2019.
  20. 20.0 20.1 Gregg, Brendan. "DTraceToolkit Style Guide". Retrieved 6 February 2015.
  21. Shannon, Bill (9 September 1998). "cstyle.pl". illumos-gate. 1.58. Sun Microsystems, Inc. Retrieved 6 February 2015.
  22. "indent style". The on-line hacker Jargon File. 4.4.7. 2003-12-29. Retrieved 2022-03-20 – via catb.
  23. 23.0 23.1 23.2 McConnell, Steve (2004). Code Complete: A practical handbook of software construction. Redmond, WA: Microsoft Press. pp. 746–747. ISBN 978-0-7356-1967-8.
  24. "Formatting Your Source Code". GNU Coding Standards. Retrieved 6 June 2016.
  25. Stallman, Richard (28 October 2002). "My Lisp Experiences and the Development of GNU Emacs (Transcript of speech at the International Lisp Conference)". Retrieved 6 June 2016.
  26. Baumann, Richard [in Deutsch]; Feliciano, Manuel; Bauer, Friedrich Ludwig; Samelson, Klaus (1964). Introduction to ALGOL – A primer for the non-specialist, emphasizing the practical uses of the algorithmic language. Series in Automatic Computation. Englewood Cliffs, New Jersey, USA: Prentice-Hall, Inc. ISBN 0-13-477828-6. LCCN 64-10740. ark:/13960/t6qz35p37. Retrieved 2022-10-23.
  27. W. M. McKeeman, J. J. Horning, and D. B. Wortman, A Compiler Generator, 1970, https://archive.org/details/compilergenerato00mcke
  28. Tested on the sample source code above on Ubuntu 18.04 with GNU indent 2.2.11 and GNU Emacs 25.2.2 started with emacs --no-init-file.
  29. "Linux kernel coding style". Retrieved 1 January 2017.
  30. Horstmann Style Guide
  31. Ohno, Asako (2013). "A methodology to teach exemplary coding style considering students' coding style feature contains fluctuations". 2013 IEEE Frontiers in Education Conference (FIE): 1908–1910. doi:10.1109/fie.2013.6685167. ISBN 9781467352611. S2CID 28385526.
  32. Lammers, Susan (1986). Programmers at Work. Microsoft Press. ISBN 978-0-914845-71-3.
  33. Pattee, Jim. "Artistic Style 2.05 Documentation". Artistic Style. Retrieved 24 April 2015.
  34. Kernighan, Brian W.; Plauger, P. J. (1976). Software Tools. Addison-Wesley.
  35. "The Haskell 98 Report". haskell.org. Retrieved 3 March 2016.
  36. Lipovača, Miran. "Making Our Own Types and Typeclasses". learnyouahaskell.com. Retrieved 3 February 2016.
  37. Haskell Report 1.2 (1992), p.131 B.4 "Layout"
  38. "The J Incunabulum". jsoftware.com. Retrieved 19 May 2022.
  39. Lamb, Linda. Learning the vi editor. O'Reilly.


बाहरी संबंध



टैब और जगह


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