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

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


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


इंडेंटेशन अधिकांश प्रोग्रामिंग भाषाओं की आवश्यकता नहीं है जहां इसे द्वितीयक संकेतन के रूप में उपयोग किया जाता है। इसके बजाय इंडेंटिंग मानव पाठकों को प्रोग्राम की संरचना को बेहतर ढंग से व्यक्त करने में मदद करती है। विशेष रूप से इसका उपयोग नियंत्रण प्रवाह निर्माणों जैसे स्थितियों या लूपों और उनके भीतर और बाहर निहित कोड के बीच की कड़ी को स्पष्ट करने के लिए किया जाता है। हालाँकि कुछ भाषाएँ (जैसे कि [[पायथन (प्रोग्रामिंग भाषा)]] और [[ओकैम (प्रोग्रामिंग भाषा)]]) धनुकोष्ठक या कीवर्ड का उपयोग करने के बजाय संरचना का निर्धारण करने के लिए इंडेंटेशन का उपयोग करती हैं और इसे ऑफ-साइड नियम कहा जाता है। ऐसी भाषाओं में संकलक या दुभाषिया के लिए इंडेंटेशन अर्थपूर्ण है। यह केवल एक स्पष्टता या शैली के मुद्दे से अधिक है।
इस लेख में कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है और मध्यम कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है।
 
इस लेख में कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है और कर्ली कोष्ठक को संदर्भित करने के लिए शब्द कोष्ठक का उपयोग किया गया है।
 
== यौगिक कथनो में ब्रेस प्लेसमेंट ==
इंडेंटेशन शैली के बीच मुख्य अंतर यौगिक कथन के धनुकोष्ठक लगाने में निहित है (<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"
! ब्रेस प्लेसमेंट !! शैलियों
! Brace placement !! Styles
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
{
while (x == y)
    कुछ ();
{
    कुछ और ();
    something();
}
    something_else();
 
}
| सभी मर्द
</syntaxhighlight>
| [[#Allman style|Allman]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई ) {  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
    कुछ ();
while (x == y)
    कुछ और ();
  {
}
    something ();
 
    something_else ();
| के एंड आर
  }
</syntaxhighlight>
| [[#GNU style|GNU]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
  {
while (x == y)
    कुछ ();  
    {
    कुछ और ();  
    something();
  }
    something_else();
 
    }
| जीएनयू
</syntaxhighlight>
| [[#Whitesmiths style|Whitesmiths]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
    {
while (x == y) {
    कुछ ();
    something();
    कुछ और ();
    something_else();
    }
}
 
</syntaxhighlight>
| गोरे लोग
| [[#K&R style|K&R]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
{ कुछ ();  
while (x == y) {
    कुछ और ();
    something();
}
    something_else();
 
    }
| होर्स्टमैन
</syntaxhighlight>
| [[#Ratliff style|Ratliff]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
{ कुछ ();  
while (x == y)
    कुछ और (); }  
{   something();
 
    something_else();
| पिको
}
</syntaxhighlight>
| [[#Horstmann style|Horstmann]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई ) {  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
    कुछ ();
while (x == y)
    कुछ और ();
{   something();
    }
    something_else(); }
 
</syntaxhighlight>
| रैटलिफ
| [[#Pico style|Pico]]
|-
|-
| style="padding: 0 4px" | जबकि ( एक्स == वाई )   
| style="padding: 0 4px" | <syntaxhighlight lang=c>
  { कुछ ();  
while (x == y)
    कुछ और (); }  
   { something();
 
    something_else(); }
| तुतलाना
</syntaxhighlight>
| [[#Lisp style|Lisp]]
|-
|-
| style="padding: 0 4px" | <nowiki># परिभाषित डब्ल्यू (सी, बी) {जबकि (सी) {बी}}  
| style="padding: 0 4px" | <syntaxhighlight lang=c>
डब्ल्यू ( एक्स == वाई , एस (); से ();)</nowiki>
#define W(c,b) {while(c){b}}
W(x==y,s();se();)
</syntaxhighlight>
| [[#APL style|APL]]
|}


| एपीएल
[[Category:All articles with unsourced statements|Indent Style]]
|}
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


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


इंडेंटेशन का आकार प्राय: शैली से स्वतंत्र होता है। 1983 में PASCAL कोड पर किए गए एक प्रयोग में पाया गया कि इंडेंटेशन आकार ने बोधगम्यता को महत्वपूर्ण रूप से प्रभावित किया। 2 और 4 अक्षरों के बीच का इंडेंटेशन आकार इष्टतम साबित हुआ।<ref>{{cite journal |last1=Miara |first1=Richard J. |last2=Musselman |first2=Joyce A. |last3=Navarro |first3=Juan A. |last4=Shneiderman |first4=Ben |name-list-style=amp |date=November 1983 |title=Program Indentation and Comprehensibility |url=http://www.cs.umd.edu/~ben/papers/Miara1983Program.pdf |access-date=3 August 2017 |journal=Communications of the ACM |volume=26 |number=11 |pages=861–867 |doi=10.1145/182.358437|s2cid=11767796 }}</ref> [[रूबी (प्रोग्रामिंग भाषा)]] कई [[खोल स्क्रिप्ट]] भाषा और [[HTML]]  प्रारूपण के कुछ रूपों के लिए दो जगह प्रति इंडेंटेशन लेवल का प्राय: उपयोग किया जाता है।{{Citation needed|date=February 2007}}
अभिस्थापन का आकार प्राय: शैली से स्वतंत्र होता है। 1983 में पास्कल कोड पर किए गए एक प्रयोग में पाया गया कि अभिस्थापन आकार ने बोधगम्यता को महत्वपूर्ण रूप से प्रभावित किया। 2 और 4 अक्षरों के बीच का अभिस्थापन आकार इष्टतम साबित हुआ।<ref>{{cite journal |last1=Miara |first1=Richard J. |last2=Musselman |first2=Joyce A. |last3=Navarro |first3=Juan A. |last4=Shneiderman |first4=Ben |name-list-style=amp |date=November 1983 |title=Program Indentation and Comprehensibility |url=http://www.cs.umd.edu/~ben/papers/Miara1983Program.pdf |access-date=3 August 2017 |journal=Communications of the ACM |volume=26 |number=11 |pages=861–867 |doi=10.1145/182.358437|s2cid=11767796 }}</ref> [[रूबी (प्रोग्रामिंग भाषा)]] कई [[खोल स्क्रिप्ट]] भाषा और एचटीएमएल प्रारूपण के कुछ रूपों के लिए दो जगह प्रति अभिस्थापन स्तर का प्राय: उपयोग किया जाता है।
== उपकरण ==
== उपकरण ==
इंडेंटेशन शैलियों के बीच परिवर्तित करने के लिए कई उपकरण हैं जैसे<code>[[indent (Unix)|इंडेंट]]</code>कई यूनिक्स जैसे [[ऑपरेटिंग सिस्टम|प्रचालन तंत्र]] के साथ सम्मिलित एक प्रोग्राम है।
अभिस्थापन शैलियों के बीच परिवर्तित करने के लिए कई उपकरण हैं जैसे<code>[[indent (Unix)|मांगपत्र]]</code>कई यूनिक्स जैसे [[ऑपरेटिंग सिस्टम|प्रचालन तंत्र]] के साथ सम्मिलित एक प्रोग्राम है।


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


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


=== के एंड आर शैली ===
=== के एंड आर शैली ===
{{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>) प्राय: सी, [[सी ++]], और अन्य घुंघराले-ब्रेस प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं। यह मूल यूनिक्स कर्नेल, [[ब्रायन कर्निघन]] और डेनिस रिची में इस्तेमाल की जाने वाली शैली थी। रिची की पुस्तक द [[[[कर्ली-ब्रेस प्रोग्रामिंग लैंग्वेज|कर्ली-ब्रेस प्रोग्रामिंग भाषा]] ]] साथ ही कर्निघन और पी. जे. प्लेगर की पुस्तक [[प्रोग्रामिंग शैली के तत्व]] के एंड आर का पालन करते समय प्रत्येक कार्य में अगली पंक्ति में उसी इंडेंटेशन स्तर पर उसके शीर्षलेख के रूप में उद्घाटन ब्रेस होता है, धनुकोष्ठक के भीतर बयान इंडेंट होते हैं और अंत में समापन ब्रेस कार्य के शीर्षलेख के समान इंडेंटेशन स्तर पर होता है अपनी खुद की एक पंक्ति में।
 
{{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 में सिंगल-रेखा ब्लॉक में धनुकोष्ठक नहीं होते हैं।
 
<वाक्यविन्यास प्रकाश लैंग = सी>
 
इंट मेन (इंट एआरजीसी, चार * एआरजीवी [])


एक कार्य के अंदर बहु-पंक्ति ब्लॉक हालांकि उनके संबंधित नियंत्रण बयानों के समान पंक्ति पर उनके उद्घाटन धनुकोष्ठक होते हैं। समापन धनुकोष्ठक स्वयं की एक पंक्ति में रहते हैं जब तक कि एक कीवर्ड द्वारा पीछा नहीं किया जाता<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> के एंड आर में सिंगल-पंक्ति ब्लॉक में धनुकोष्ठक नहीं होते हैं।
<syntaxhighlight lang="c">
int main(int argc, char *argv[])
{
{
     ...
     ...
     जबकि (एक्स == वाई) {
     while (x == y) {
         कुछ();
         something();
         कुछ और();
         something_else();


         अगर (कुछ_त्रुटि)
         if (some_error)
             do_सही (); // K&R में सिंगल-स्टेटमेंट ब्लॉक में धनुकोष्ठक नहीं होते हैं।
             do_correct(); // In K&R a single-statement block does not have braces.
         अन्य
         else
             जारी_जैसा_सामान्य ();
             continue_as_usual();
     }
     }


     अंतिम बात ();
     final_thing();
     ...
     ...
}
}
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 
सी प्रोग्रामिंग भाषा प्रभाव इस शैली को स्पष्ट रूप से निर्दिष्ट नहीं करता है हालांकि पूरी किताब में इसका लगातार पालन किया जाता है। पुस्तक से धनुकोष्ठक की स्थिति कम महत्वपूर्ण है हालांकि लोग भावुक विश्वास रखते हैं। हमने कई लोकप्रिय शैलियों में से एक को चुना है।  
सी प्रोग्रामिंग भाषा #इन्फ्लुएंस इस शैली को स्पष्ट रूप से निर्दिष्ट नहीं करता है हालांकि पूरी किताब में इसका लगातार पालन किया जाता है। पुस्तक से:
 
<ब्लॉककोट>
 
धनुकोष्ठक की स्थिति कम महत्वपूर्ण है हालांकि लोग भावुक विश्वास रखते हैं। हमने कई लोकप्रिय शैलियों में से एक को चुना है। एक शैली चुनें जो आपको सूट करे फिर उसका लगातार उपयोग करें।
 
</ब्लॉककोट>


सी भाषा के पुराने संस्करणों में तर्क प्रकारों को बाद की पंक्ति पर घोषित करने की आवश्यकता होती है (यानी कार्य के शीर्षलेख के ठीक बाद):
सी भाषा के पुराने संस्करणों में तर्क प्रकारों को बाद की पंक्ति पर घोषित करने की आवश्यकता होती है (यानी कार्य के शीर्षलेख के ठीक बाद):
 
    /* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी स्टाइल */
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
 
/* Original pre-ISO C style without function prototypes */
/* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी शैली */
int main(argc, argv)
 
     int  argc;
इंट मेन (एआरजीसी, एआरजीवी)
     char  *argv[];
     इंट एआरजीसी;
     चार * अर्गव [];
{
{
     ...
     ...
}
}
 
</syntaxhighlight>
</वाक्यविन्यास हाइलाइट>
 
{{anchor|Variant: 1TBS}}
====वैरिएंट: 1TBS (OTBS)====
====वैरिएंट: 1TBS (OTBS)====
एक सच्ची ब्रेस शैली (1TBS या OTBS के रूप में संक्षिप्त<ref name="catb.org"/> के एंड आर के समान है। मुख्य दो अंतर यह हैं कि कार्यों में उनके शुरुआती धनुकोष्ठक एक ही रेखा पर एक स्थान से अलग होते हैं और यह कि धनुकोष्ठक को नियंत्रण कथन के लिए छोड़ा नहीं जाता है इसके दायरे में केवल एक कथन होता है।<ref name=onetruestyle>{{cite web |url=http://2ality.com/2013/01/brace-styles.html |title=Brace styles and JavaScript |date=7 January 2013 |access-date=8 November 2018}}</ref>
एक सच्ची कोष्ठक शैली (1TBS या OTBS के रूप में संक्षिप्त<ref name="catb.org"/> के एंड आर के समान है। मुख्य दो अंतर यह हैं कि कार्यों में उनके शुरुआती धनुकोष्ठक एक ही पंक्ति पर एक स्थान से अलग होते हैं और यह कि धनुकोष्ठक को नियंत्रण कथन के लिए छोड़ा नहीं जाता है इसके दायरे में केवल एक कथन होता है।<ref name=onetruestyle>{{cite web |url=http://2ality.com/2013/01/brace-styles.html |title=Brace styles and JavaScript |date=7 January 2013 |access-date=8 November 2018}}</ref>


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


इस शैली के सुझाए गए फायदे यह हैं कि शुरुआती ब्रेस को अकेले अतिरिक्त रेखा की आवश्यकता नहीं होती है और समापन ब्रेस उस कथन के साथ रेखा ऊपर करता है जो वैचारिक रूप से संबंधित है। इस शैली की एक लागत यह है कि एक ब्लॉक के अंतिम ब्रेस को अकेले एक पूरी रेखा की आवश्यकता होती है जिसे आंशिक रूप से if/else ब्लॉक और डू/जबकि ब्लॉक में हल किया जा सकता है:
इस शैली के सुझाए गए फायदे यह हैं कि शुरुआती कोष्ठक को अकेले अतिरिक्त पंक्ति की आवश्यकता नहीं होती है और समापन कोष्ठक उस कथन के साथ पंक्ति ऊपर करता है जो वैचारिक रूप से संबंधित है। इस शैली की एक लागत यह है कि एक ब्लॉक के अंतिम कोष्ठक को अकेले एक पूरी पंक्ति की आवश्यकता होती है जिसे आंशिक रूप से if/else ब्लॉक और डू/जबकि ब्लॉक में हल किया जा सकता है:
 
<syntaxhighlight lang=c>
<वाक्यविन्यास प्रकाश लैंग = सी>
void check_negative(x) {
 
     if (x < 0) {
शून्य चेकनेगेटिव (एक्स) {
         puts("Negative");
     अगर (एक्स <0) {
     } else {
         पुट (नकारात्मक);
         nonnegative(x);
     } अन्य {
         अऋणात्मक (एक्स);
     }
     }
}
}
 
</syntaxhighlight>
</वाक्यविन्यास हाइलाइट>
द वन ट्रू कोष्ठक शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है<ref name="onetruestyle" />जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।<ref name="jargon" />
 
द वन ट्रू ब्रेस शैली के कई उल्लेख हैं लेकिन इसके वास्तविक रूप को लेकर कुछ भ्रम है। कुछ सूत्रों का कहना है कि यह ऊपर निर्दिष्ट भिन्नता है<ref name="onetruestyle" />जबकि अन्य ध्यान दें कि यह के एंड आर के लिए सिर्फ एक और हैकर शब्दजाल के रूप में है।<ref name="jargon" />
==== संस्करण: [[लिनक्स कर्नेल]] ====
==== संस्करण: [[लिनक्स कर्नेल]] ====
K&R शैली का एक लघु संस्करण Linux कर्नेल शैली है जो Linux कर्नेल के स्रोत ट्री में इसके व्यापक उपयोग के लिए जानी जाती है।<ref>A detailed description of the style is given at [https://www.kernel.org/doc/html/latest/process/coding-style.html kernel.org].</ref> [[लिनस टोरवाल्ड्स]] दृढ़ता से सभी योगदानकर्ताओं को इसका पालन करने की सलाह देते हैं। शैली के एंड आर से कई तत्वों को उधार लेती है।
के एंड आर शैली का एक लघु संस्करण लिनक्स कर्नेल शैली है जो लिनक्स कर्नेल के स्रोत ट्री में इसके व्यापक उपयोग के लिए जानी जाती है।<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>switch</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> कथन में धनुकोष्ठक की आवश्यकता होती है तो दोनों सब कथन को मध्यम धनुकोष्ठक के अंदर लपेटा जाना चाहिए: 
<syntaxhighlight lang=c>
int power(int x, int y)
{
{
         इंट परिणाम;
         int result;


         अगर (वाई <0) {
         if (y < 0) {
                 परिणाम = 0;
                 result = 0;
         } अन्य {
         } else {
                 परिणाम = 1;
                 result = 1;
                 जबकि (y-- > 0)
                 while (y-- > 0)
                         परिणाम * = एक्स;
                         result *= x;
         }
         }
         वापसी परिणाम;
         return result;
}
}
 
</syntaxhighlight>
</वाक्यविन्यास हाइलाइट>


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


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


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


यह शैली काफी हद तक व्यापक है क्योंकि [[सन माइक्रोसिस्टम्स|सन सूक्ष्मतंत्र]] की मूल शैली मार्गदर्शक करती है<ref>{{cite web |url=http://developers.sun.com/prodtech/cc/products/archive/whitepapers/java-style.pdf |title=Java Coding Style Guide |last=Reddy |first=Achut |publisher=Sun Microsystems |date=30 March 2000 |access-date=30 May 2008 |url-status=dead |archive-url=https://web.archive.org/web/20060228095122/http://developers.sun.com/prodtech/cc/products/archive/whitepapers/java-style.pdf |archive-date=28 February 2006}}</ref><ref>{{cite web |url=http://java.sun.com/docs/codeconv/CodeConventions.pdf |title=Java Code Conventions |publisher=Sun Microsystems |date=12 September 1997 |access-date=30 May 2008 |url-status=dead |archive-url=https://web.archive.org/web/20080513084244/http://java.sun.com/docs/codeconv/CodeConventions.pdf |archive-date=13 May 2008}}</ref><ref>{{cite web
यह शैली काफी हद तक व्यापक है क्योंकि [[सन माइक्रोसिस्टम्स|सन सूक्ष्मतंत्र]] की मूल शैली मार्गदर्शक करती है<ref>{{cite web |url=http://developers.sun.com/prodtech/cc/products/archive/whitepapers/java-style.pdf |title=Java Coding Style Guide |last=Reddy |first=Achut |publisher=Sun Microsystems |date=30 March 2000 |access-date=30 May 2008 |url-status=dead |archive-url=https://web.archive.org/web/20060228095122/http://developers.sun.com/prodtech/cc/products/archive/whitepapers/java-style.pdf |archive-date=28 February 2006}}</ref><ref>{{cite web |url=http://java.sun.com/docs/codeconv/CodeConventions.pdf |title=Java Code Conventions |publisher=Sun Microsystems |date=12 September 1997 |access-date=30 May 2008 |url-status=dead |archive-url=https://web.archive.org/web/20080513084244/http://java.sun.com/docs/codeconv/CodeConventions.pdf |archive-date=13 May 2008}}</ref><ref>{{cite web
Line 204: Line 197:
| publisher=Sun Microsystems
| publisher=Sun Microsystems
| date=20 March 1997
| date=20 March 1997
| access-date=30 May 2008}}</ref> इस K&R संस्करण का उपयोग किया और परिणामस्वरूप [[जावा क्लास लाइब्रेरी|वर्ग ग्रंथालय]] के लिए अधिकांश मानक स्रोत कोड इस शैली में लिखे गए हैं। यह Allman शैली के साथ-साथ [[ActionScript]] और [[JavaScript]] के लिए भी एक लोकप्रिय इंडेंटेशन शैली है।
| access-date=30 May 2008}}</ref> इस के एंड आर संस्करण का उपयोग किया और परिणामस्वरूप [[जावा क्लास लाइब्रेरी|वर्ग ग्रंथालय]] के लिए अधिकांश मानक स्रोत कोड इस शैली में लिखे गए हैं। यह ऑलमैन शैली के साथ-साथ [[ActionScript|एक्शनस्क्रिप्ट]] और [[JavaScript|जावास्क्रिप्ट]] के लिए भी एक लोकप्रिय अभिस्थापन शैली है।
 
==== संस्करण: स्ट्रॉस्ट्रुप ====
==== संस्करण: स्ट्रॉस्ट्रुप ====
स्ट्रॉस्ट्रुप शैली [[बज़्ने स्ट्रॉस्ट्रुप]] का सी ++ के लिए के एंड आर शैली का अनुकूलन है जैसा कि उनकी पुस्तकों में प्रयोग किया जाता है जैसे कि प्रोग्रामिंग सिद्धांतों और अभ्यास का उपयोग करना सी ++ और [[सी ++ प्रोग्रामिंग भाषा]]<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" />
ऊपर दिए गए वेरिएंट के विपरीत स्ट्रॉस्ट्रुप एक कडलड एल्स का उपयोग नहीं करता है। इस प्रकार स्ट्राउस्ट्रप लिखेंगे:
 
<syntaxhighlight lang=c>
<वाक्यविन्यास प्रकाश लैंग = सी>
     if (x < 0) {
     अगर (एक्स <0) {
         puts("Negative");
         पुट (नकारात्मक);
         negative(x);
         नकारात्मक (एक्स);
     }
     }
     अन्य {
     else {
         पुट (गैर-नकारात्मक);
         puts("Non-negative");
         अऋणात्मक (एक्स);
         nonnegative(x);
     }
     }
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 
स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है:
स्ट्रॉस्ट्रुप कक्षाओं के लिए के एंड आर शैली का विस्तार करता है उन्हें निम्नानुसार लिखता है:
 
   
<वाक्यविन्यास लैंग = सीपीपी>
<syntaxhighlight lang=cpp>
     वर्ग वेक्टर {
     class Vector {
     जनता:
     public:
         वेक्टर (इंट एस): एलेम (नया डबल [एस]), एसजेड (एस) {} // एक वेक्टर का निर्माण
         Vector(int s) :elem(new double[s]), sz(s) { }   // construct a Vector
         डबल और ऑपरेटर [] (इंट आई) {वापसी तत्व [i]; } // एलिमेंट एक्सेस: सबस्क्रिप्टिंग
         double& operator[](int i) { return elem[i]; }   // element access: subscripting
         int आकार () {वापसी sz; }
         int size() { return sz; }
     निजी:
     private:
         डबल * एलिम; // तत्वों के लिए सूचक
         double * elem;   // pointer to the elements
         इंट एसजेड; // तत्वों की संख्या
         int sz;           // number of elements
     };
     };
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
स्ट्रॉस्ट्रुप स्तर को मांगपत्र नहीं करता है {{code|public:}}और {{code|private:}} इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला कोष्ठक एक नई पंक्ति पर शुरू होती है एक क्लास की खुला कोष्ठक उसी पंक्ति पर होती है जिस पर क्लास का नाम होता है।


स्ट्रॉस्ट्रुप स्तर को इंडेंट नहीं करता है {{code|public:}}और {{code|private:}} इसके अतिरिक्त इस शैली में जबकि एक कार्य की खुला ब्रेस एक नई रेखा पर शुरू होती है एक क्लास की खुला ब्रेस उसी रेखा पर होती है जिस पर क्लास का नाम होता है।
स्ट्रॉस्ट्रुप छोटे कार्यों को एक पंक्ति में लिखने की अनुमति देता है। स्ट्राउस्ट्रप शैली एक नामांकित अभिस्थापन शैली है जो संपादक Emacs में उपलब्ध है। स्ट्रॉस्ट्रुप अपने आधुनिक सी++ कोर दिशानिर्देशों में बताए गए अनुसार सी++ के साथ एक के एंड आर-व्युत्पन्न शैली लेआउट को प्रोत्साहित करता है।<ref>{{cite web |last1=Stroustrup |first1=Bjarne |title=C++ Core Guidelines |url=https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#nl17-use-kr-derived-layout |website=GitHub |access-date=3 November 2018}}</ref>
 
स्ट्रॉस्ट्रुप छोटे कार्यों को एक पंक्ति में लिखने की अनुमति देता है। स्ट्राउस्ट्रप शैली एक नामांकित इंडेंटेशन शैली है जो संपादक Emacs में उपलब्ध है। स्ट्रॉस्ट्रुप अपने आधुनिक सी++ कोर दिशानिर्देशों में बताए गए अनुसार सी++ के साथ एक के एंड आर-व्युत्पन्न शैली लेआउट को प्रोत्साहित करता है।<ref>{{cite web |last1=Stroustrup |first1=Bjarne |title=C++ Core Guidelines |url=https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#nl17-use-kr-derived-layout |website=GitHub |access-date=3 November 2018}}</ref>
====वैरिएंट: बीएसडी केएनएफ====
====वैरिएंट: बीएसडी केएनएफ====
[[कर्नेल सामान्य रूप]] भी कहा जाता है, यह [[बर्कले सॉफ्टवेयर वितरण]] (BSD) प्रचालन तंत्र में उपयोग किए जाने वाले अधिकांश कोड का रूप है। हालांकि ज्यादातर कर्नेल कोड के लिए अभिप्रेत है, यह [[यूजरलैंड (कंप्यूटिंग)]] कोड में भी व्यापक रूप से उपयोग किया जाता है। बेल लैब्स संस्करण 6 और 7 यूनिक्स स्रोत कोड में उपयोग किए जाने के रूप में यह अनिवार्य रूप से के एंड आर शैली का एक पूरी तरह से प्रलेखित संस्करण है।<ref name="C Style and Coding Standards for SunOS">{{cite news |last1=Shannon |first1=Bill |title=C Style and Coding Standards for SunOS |url=https://www.cis.upenn.edu/~lee/06cse480/data/cstyle.ms.pdf |access-date=15 June 2019 |version=1.8 |publisher=Sun Microsystems, Inc. |date=19 August 1996}}</ref>
[[कर्नेल सामान्य रूप]] भी कहा जाता है, यह [[बर्कले सॉफ्टवेयर वितरण]] (BSD) प्रचालन तंत्र में उपयोग किए जाने वाले अधिकांश कोड का रूप है। हालांकि ज्यादातर कर्नेल कोड के लिए अभिप्रेत है, यह [[यूजरलैंड (कंप्यूटिंग)]] कोड में भी व्यापक रूप से उपयोग किया जाता है। बेल लैब्स संस्करण 6 और 7 यूनिक्स स्रोत कोड में उपयोग किए जाने के रूप में यह अनिवार्य रूप से के एंड आर शैली का एक पूरी तरह से प्रलेखित संस्करण है।<ref name="C Style and Coding Standards for SunOS">{{cite news |last1=Shannon |first1=Bill |title=C Style and Coding Standards for SunOS |url=https://www.cis.upenn.edu/~lee/06cse480/data/cstyle.ms.pdf |access-date=15 June 2019 |version=1.8 |publisher=Sun Microsystems, Inc. |date=19 August 1996}}</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>
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>। ऐसे कार्य जो अपने शीर्ष-स्तरीय ब्लॉक में कोई स्थानीय चर घोषित नहीं करते हैं उनके शुरुआती ब्लॉक कोष्ठक के बाद भी एक खाली पंक्ति छोड़नी चाहिए।


यहाँ कुछ नमूने देखें:
यहाँ कुछ नमूने देखें:
 
<syntaxhighlight lang=c>
<वाक्यविन्यास प्रकाश लैंग = सी>
while (x == y) {
जबकि (एक्स == वाई) {
         something();
         कुछ();
         something_else();
         कुछ और();
}
}
अंतिम बात ();
final_thing();
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
अगर (डेटा! = न्यूल एंड& रेस> 0) {
if (data != NULL && res > 0) {
         अगर (JS_DefineProperty (सीएक्स, , डेटा,
         if (JS_DefineProperty(cx, o, "data",
             STRING_TO_JSVAL(JS_NewStringCopyN(cx, डेटा, Res)),
             STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)),
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
             NULL, NULL, JSPROP_ENUMERATE) != 0) {
                 QUEUE_EXCEPTION(आंतरिक त्रुटि!);
                 QUEUE_EXCEPTION("Internal error!");
                 गोटो गलती;
                 goto err;
         }
         }
         पीक्यू फ्रीमेम (डेटा);
         PQfreemem(data);
} अन्य {
} else {
         अगर (JS_DefineProperty (cx, o, डेटा, OBJECT_TO_JSVAL (NULL),
         if (JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL),
             न्यूल, न्यूल, जेएसपीआरओपी_ENUMERATE)! = 0) {
             NULL, NULL, JSPROP_ENUMERATE) != 0) {
                 QUEUE_EXCEPTION(आंतरिक त्रुटि!);
                 QUEUE_EXCEPTION("Internal error!");
                 गोटो गलती;
                 goto err;
         }
         }
}
}
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
स्थिर जेएसबूल
static JSBool
pgresult_constructor(JSContext *cx, JSObject *obj, uintN argc,
pgresult_constructor(JSContext *cx, JSObject *obj, uintN argc,
     jsval * argv, jsval * रावल)
     jsval *argv, jsval *rval)
{
{


         QUEUE_EXCEPTION (पीग्रेसल्ट वर्ग उपयोगकर्ता-तत्काल योग्य नहीं है);
         QUEUE_EXCEPTION("PGresult class not user-instantiable");


         वापसी (JS_FALSE);
         return (JS_FALSE);
}
}
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


=== ऑलमैन शैली ===
=== ऑलमैन शैली ===
{{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>
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
जबकि (एक्स == वाई)
while (x == y)
{
{
     कुछ();
     something();
     कुछ और();
     something_else();
}
}


अंतिम बात ();
final_thing();
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 
यह शैली [[पास्कल (प्रोग्रामिंग भाषा)]] भाषाओं और [[कारोबार-एसक्यूएल]] द्वारा उपयोग किए जाने वाले मानक अभिस्थापन के समान है जहां धनुकोष्ठक कीवर्ड के बराबर हैं I <code>begin</code> और <code>end</code>.
यह शैली [[पास्कल (प्रोग्रामिंग भाषा)]] भाषाओं और [[कारोबार-एसक्यूएल]] द्वारा उपयोग किए जाने वाले मानक इंडेंटेशन के समान है, जहां धनुकोष्ठक कीवर्ड के बराबर हैं I <code>begin</code> और <code>end</code>.
<syntaxhighlight lang=pascal>
 
(* Example Allman code indentation style in Pascal *)
<वाक्यविन्यास लैंग = पास्कल>
procedure dosomething(x, y: Integer);
(* पास्कल में ऑलमैन कोड इंडेंटेशन शैली का उदाहरण *)
begin
प्रक्रिया dosomething(x, y: पूर्णांक);
     while x = y do
शुरू
     begin
     जबकि x = y करते हैं
         something();
     शुरू
         something_else();
         कुछ();
     end;
         कुछ और();
end;
     अंत;
</syntaxhighlight>
अंत
इस शैली के परिणाम यह हैं कि मांगपत्र कोड स्पष्ट रूप से उन पंक्तियों के द्वारा युक्त कथन से अलग होता है जो लगभग सभी व्हाइट जगह वर्ण होते हैं और समापन कोष्ठक उसी कॉलम में होते हैं जो उद्घाटन कोष्ठक के रूप में होते हैं। कुछ लोगों को लगता है कि इससे मिलान धनुकोष्ठक ढूंढना आसान हो जाता है। अवरुद्ध शैली संबंधित नियंत्रण कथन से कोड के ब्लॉक को भी चित्रित करती है। नियंत्रण कथन या कोड के ब्लॉक या [[कोड रीफैक्टरिंग|कोड पुनर्रचना]] पर टिप्पणी करने या हटाने से लटकने या लापता धनुकोष्ठक के माध्यम से वाक्य - विन्यास त्रुटियों को प्रस्तुत करने की संभावना कम होती है। साथ ही यह बाहरी कार्य ब्लॉक के लिए कोष्ठक स्थान  के अनुरूप है।
 
</वाक्यविन्यास हाइलाइट>
 
इस शैली के परिणाम यह हैं कि इंडेंट कोड स्पष्ट रूप से उन पंक्तियों के द्वारा युक्त कथन से अलग होता है जो लगभग सभी व्हाइटजगह वर्ण होते हैं और समापन ब्रेस उसी कॉलम में होते हैं जो उद्घाटन ब्रेस के रूप में होते हैं। कुछ लोगों को लगता है कि इससे मैचिंग धनुकोष्ठक ढूंढना आसान हो जाता है। अवरुद्ध शैली संबंधित नियंत्रण कथन से कोड के ब्लॉक को भी चित्रित करती है। कंट्रोल कथन या कोड के ब्लॉक या [[कोड रीफैक्टरिंग]] पर टिप्पणी करने या हटाने से लटकने या लापता धनुकोष्ठक के माध्यम से वाक्य - विन्यास त्रुटियों को पेश करने की संभावना कम होती है। साथ ही, यह बाहरी कार्य ब्लॉक के लिए ब्रेस प्लेसमेंट के अनुरूप है।


उदाहरण के लिए निम्नलिखित अभी भी वाक्य रचनात्मक रूप से सही है:
उदाहरण के लिए निम्नलिखित अभी भी वाक्य रचनात्मक रूप से सही है:
 
  <syntaxhighlight lang=c>
<वाक्यविन्यास प्रकाश लैंग = सी>
// while (x == y)
 
// जबकि (एक्स == वाई)
 
{
{
     कुछ();
     something();
     कुछ और();
     something_else();
}
}
 
</syntaxhighlight>
</वाक्यविन्यास हाइलाइट>
As is this:
 
<syntaxhighlight lang=c>
जैसा यह है:
    int c;
 
<वाक्यविन्यास प्रकाश लैंग = सी>
 
// के लिए (int i=0; i <x; i++)
 
// जबकि (एक्स == वाई)
 
अगर (एक्स == वाई)
 
{
    कुछ();
    कुछ और();
}
 
</वाक्यविन्यास हाइलाइट>
 
इस तरह भी सशर्त संकलन के साथ:
 
<वाक्यविन्यास प्रकाश लैंग = सी>
    इंट सी;
#ifdef HAS_GETCH
#ifdef HAS_GETCH
     जबकि ((सी = getch ())! = ईओएफ)
     while ((c = getch()) != EOF)
#अन्य
#else
     जबकि ((सी = getchar ())! = ईओएफ)
     while ((c = getchar()) != EOF)
#अगर अंत
#endif
     {
     {
         do_something (सी);
         do_something(c);
     }
     }
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


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


[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


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


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


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


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


<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
जबकि (एक्स == वाई)
while (x == y)
     {
     {
     कुछ();
     something();
     कुछ और();
     something_else();
     }
     }


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


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


<code>else if</code> कथन के रूप में व्यवहार किया जाता है, जैसे कि <code>#elif</code> प्रीप्रोसेसर कथन।
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


=== जीएनयू शैली ===
=== जीएनयू शैली ===
{{Main article|GNU coding standards}}
#ऑलमैन शैली और व्हाईटस्मिथ्स शैली शैली की तरह जीएनयू शैली एक पंक्ति पर खुद से धनुकोष्ठक लगाती है, दो जगह द्वारा मांगपत्र किया जाता है सिवाए कार्य परिभाषा को जहां वे मांगपत्र नहीं होते हैं।<ref name="gnu.org">{{cite web
#ऑलमैन शैली और व्हाईटस्मिथ्स शैली शैली की तरह, [[GNU]] शैली एक रेखा पर खुद से धनुकोष्ठक लगाती है, दो जगह द्वारा इंडेंट किया जाता है सिवाए कार्य परिभाषा को जहां वे इंडेंट नहीं होते हैं।<ref name="gnu.org">{{cite web
|url=https://www.gnu.org/prep/standards/html_node/Formatting.html
|url=https://www.gnu.org/prep/standards/html_node/Formatting.html
|title=Formatting Your Source Code
|title=Formatting Your Source Code
|website=[[GNU Coding Standards]]
|website=[[GNU Coding Standards]]
|access-date=6 June 2016
|access-date=6 June 2016
}}</ref> किसी भी स्थिति में निहित कोड को धनुकोष्ठक से दो रिक्त स्थान द्वारा इंडेंट किया जाता है।
}}</ref> किसी भी स्थिति में निहित कोड को धनुकोष्ठक से दो रिक्त स्थान द्वारा मांगपत्र किया जाता है।
 
[[रिचर्ड स्टालमैन]] द्वारा लोकप्रिय लेआउट [[लिस्प (प्रोग्रामिंग भाषा)]] कोड लिखने की उनकी पृष्ठभूमि से प्रभावित हो सकता है।<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}} हालांकि सीधे अभिस्थापन से संबंधित नहीं है। जीएनयू कोडिंग शैली में कार्य के तर्कों की ब्रैकेटेड सूची से पहले एक स्थान भी सम्मिलित है।
स्थैतिक चार *
<syntaxhighlight lang=c>
concat (चार *s1, चार *s2)
static char *
concat (char *s1, char *s2)
{
{
   जबकि (एक्स == वाई)
   while (x == y)
     {
     {
       कुछ ();
       something ();
       कुछ और ();
       something_else ();
     }
     }
   अंतिम बात ();
   final_thing ();
}
}
</वाक्यविन्यास हाइलाइट><ref name="gnu.org"/>
</syntaxhighlight><ref name="gnu.org"/>
यह शैली ऑलमैन शैली और व्हाईटस्मिथ शैली के लाभों को जोड़ती है जिससे ब्लॉक से बाहर नहीं खड़े होने वाले धनुकोष्ठक के संभावित व्हाइटस्मिथ नुकसान को दूर किया जाता है। एक नुकसान यह है कि अंतिम कोष्ठक अब उस कथन के अनुरूप नहीं है जिससे यह अवधारणात्मक रूप से संबंधित है। एक और संभावित नुकसान यह है कि यह एक वैचारिक स्तर के लिए मांगपत्र के दो दृश्य स्तरों का उपयोग करके स्थान को बर्बाद कर सकता है लेकिन वास्तव में यह संभावना नहीं है क्योंकि एकल-स्तरीय अभिस्थापन वाले तंत्र में प्रत्येक स्तर प्राय: कम से कम 4 रिक्त स्थान होता है जैसा कि 2 * जीएनयू शैली में 2 रिक्त स्थान।
 
जीएनयू कोडिंग मानक इस शैली की अनुशंसा करते हैं और [[जीएनयू परियोजना]] सॉफ़्टवेयर के लगभग सभी अनुरक्षक इसका उपयोग करते हैं।


यह शैली ऑलमैन शैली और व्हाईटस्मिथ शैली के लाभों को जोड़ती है, जिससे ब्लॉक से बाहर नहीं खड़े होने वाले धनुकोष्ठक के संभावित व्हाइटस्मिथ नुकसान को दूर किया जाता है। एक नुकसान यह है कि अंतिम ब्रेस अब उस कथन के अनुरूप नहीं है जिससे यह अवधारणात्मक रूप से संबंधित है। एक और संभावित नुकसान यह है कि यह एक वैचारिक स्तर के लिए इंडेंट के दो दृश्य स्तरों का उपयोग करके स्थान को बर्बाद कर सकता है, लेकिन वास्तव में यह संभावना नहीं है, क्योंकि एकल-स्तरीय इंडेंटेशन वाले तंत्र  में प्रत्येक स्तर प्राय: कम से कम 4 रिक्त स्थान होता है जैसा कि 2 * जीएनयू शैली में 2 रिक्त स्थान।
[[GNU Emacs|जीएनयू Emacs]] टेक्स्ट एडिटर और जीएनयू तंत्र का मांगपत्र (यूनिक्स) कमांड गलत रूप से इस शैली के अनुसार कोड को रिफॉर्मेट करेगा।<ref>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 <code>emacs --no-init-file</code>.</ref> जो लोग जीएनयू Emacs या समान रूप से अनुकूलन योग्य संपादकों का उपयोग नहीं करते हैं। उनके संपादक की स्वचालित अभिस्थापन शैली के लिए अनुपयोगी हैं। हालांकि केएनएफ शैली के लिए खराब करने वाले कई संपादक जीएनयू शैली के साथ अच्छी तरह से सामना करते हैं जब टैब की चौड़ाई दो स्थानों पर तय होती है। इसी तरह जीएनयू Emacs केवल टैब की चौड़ाई को आठ स्थानों पर तय करके केएनएफ शैली के अनुकूल हो जाता है। दोनों ही स्थिति में स्वचालित सुधार मूल रिक्ति को नष्ट कर देता है लेकिन स्वचालित पंक्ति मांगपत्र ठीक से काम करेगी।


GNU कोडिंग मानक इस शैली की अनुशंसा करते हैं, और [[जीएनयू परियोजना]] सॉफ़्टवेयर के लगभग सभी अनुरक्षक इसका उपयोग करते हैं।{{Citation needed|date=February 2013}}
[[स्टीव मैककोनेल]] अपनी पुस्तक [[कोड पूर्ण]] में इस शैली का उपयोग करने के विपरीत सलाह देते हैं। वह एक कोड नमूना चिह्नित करता है जो कोडिंग हॉरर आइकन के साथ इसका उपयोग करता है।विशेष रूप से खतरनाक कोड का प्रतीक है और कहता है कि यह पठनीयता को बाधित करता है।<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>


[[GNU Emacs]] टेक्स्ट एडिटर और GNU तंत्र  का इंडेंट (Unix) कमांड गलत  रूप से इस शैली के अनुसार कोड को रिफॉर्मेट करेगा।<ref>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 <code>emacs --no-init-file</code>.</ref> जो लोग GNU Emacs, या समान रूप से एक्स्टेंसिबल/अनुकूलन योग्य संपादकों का उपयोग नहीं करते हैं, वे पा सकते हैं कि उनके संपादक की स्वचालित इंडेंटेशन सेटिंग्स इस शैली के लिए अनुपयोगी हैं। हालांकि, केएनएफ शैली के लिए डिफॉल्ट करने वाले कई संपादक जीएनयू शैली के साथ अच्छी तरह से सामना करते हैं जब टैब की चौड़ाई दो स्थानों पर सेट होती है; इसी तरह GNU Emacs केवल टैब की चौड़ाई को आठ स्थानों पर सेट करके KNF शैली के अनुकूल हो जाता है। दोनों ही स्थिति में स्वचालित सुधार मूल रिक्ति को नष्ट कर देता है लेकिन स्वचालित रेखा इंडेंटिंग ठीक से काम करेगी।
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


[[स्टीव मैककोनेल]], अपनी पुस्तक [[कोड पूर्ण]] में, इस शैली का उपयोग करने के खिलाफ सलाह देते हैं: वह एक कोड नमूना चिह्नित करता है जो कोडिंग हॉरर आइकन के साथ इसका उपयोग करता है, विशेष रूप से खतरनाक कोड का प्रतीक है, और कहता है कि यह पठनीयता को बाधित करता है।<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 का संस्करण खुला कोष्ठक के समान पंक्ति पर एक ब्लॉक के पहले कथन को रखकर ऑलमैन शैली को अपनाता है। इस शैली का उपयोग जेन्सेन और विर्थ के पास्कल उपयोगकर्ता पुस्तिका और प्रतिवेदन के उदाहरणों में भी किया जाता है।
 
  जबकि (एक्स == वाई)
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
 
while (x == y)
जबकि (एक्स == वाई)
something();
 
     something_else();
कुछ();
     कुछ और();
     //...
     //...
     अगर (एक्स <0)
     if (x < 0)
     {प्रिंटफ (नकारात्मक);
     {   printf("Negative");
         नकारात्मक (एक्स);
         negative(x);
     }
     }
     अन्य
     else
     {प्रिंटफ (गैर-नकारात्मक);
     {   printf("Non-negative");
         अऋणात्मक (एक्स);
         nonnegative(x);
     }
     }
}
}
अंतिम बात ();
final_thing();
</syntaxhighlight>
यह शैली के एंड आर शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके ऑलमैन शैली के लाभों को जोड़ती है। हालाँकि 2003 का संस्करण अब ऑलमैन शैली का उपयोग करता है।<ref>[http://www.horstmann.com/bigcpp/styleguide.html Horstmann Style Guide]</ref>


</वाक्यविन्यास हाइलाइट>
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


यह शैली K&R शैली की एक पंक्ति की बचत के साथ पठनीयता के लिए धनुकोष्ठक के ऊर्ध्वाधर संरेखण को बनाए रखते हुए और आसानी से ब्लॉक की पहचान करके #Allman शैली के लाभों को जोड़ती है। हालाँकि, 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-->
<!--no geshi support for pico-->
<पूर्व>
<pre>
stuff(n):
{ x: 3 * n;
  y: do_stuff(x);
  y + x }
</pre>


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


{एक्स: 3 * एन;
[[Category:All articles with unsourced statements|Indent Style]]
  वाई: डू स्टफ (एक्स);
[[Category:Articles with Curlie links|Indent Style]]
  वाई + एक्स}
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
</पूर्व>
[[Category:Articles with invalid date parameter in template|Indent Style]]
 
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
फायदे और नुकसान के एंड आर शैली के साथ स्क्रीन रियल एस्टेट को बचाने के समान हैं। एक अतिरिक्त लाभ यह है कि प्रारंभिक और समापन धनुकोष्ठक K&R शैली के सापेक्ष अनुप्रयोग में सुसंगत हैं (दोनों कोड की एक पंक्ति के साथ स्थान साझा करते हैं), जहां एक ब्रेस कोड की एक पंक्ति के साथ स्थान साझा करता है और एक ब्रेस में केवल एक पंक्ति होती है।
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


=== रैटलिफ शैली ===
=== रैटलिफ शैली ===
प्रोग्रामर एट वर्क पुस्तक में,<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" />शैली कुछ लोगों के लिए दृश्य स्कैनिंग को आसान बना सकती है क्योंकि किसी भी ब्लॉक के हेडर ही उस स्तर पर प्रचलित होते हैं (सिद्धांत यह है कि पूर्व ब्लॉक का समापन नियंत्रण के एंड आर में अगले ब्लॉक हेडर के दृश्य प्रवाह के साथ हस्तक्षेप करता है और ऑलमैन शैली)। सॉफ्टवेयर उपकरण मे रैटफोर कोड में कर्निघन और प्लेगर इस शैली का उपयोग करते हैं।<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>
<वाक्यविन्यास प्रकाश लैंग = सी>
<syntaxhighlight lang=c>
  // सी में
  // In C
  के लिए (i = 0; i <10; i++) {
  for (i = 0; i < 10; i++) {
     अगर (मैं% 2 == 0) {
     if (i % 2 == 0) {
         कुछ करो (मैं);
         do_something(i);
         }
         }
     अन्य {
     else {
         कुछ और करो (i);
         do_something_else(i);
         }
         }
     }
     }
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>


या, मार्कअप भाषा में...
or, in a markup language...


<वाक्यविन्यास हाइलाइट लैंग = html4सख्त>
<syntaxhighlight lang="wikitext">
{|
{|
|-
|-
Line 503: Line 530:
       || alternative for short lines || etc.  
       || alternative for short lines || etc.  
|}
|}


{|
{|
Line 508: Line 536:
... etc
... etc
|}
|}
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight>
 
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


=== लिस्प शैली ===
=== लिस्प शैली ===
एक प्रोग्रामर यहां तक ​​कि एक ब्लॉक की अंतिम पंक्ति में क्लोजिंग धनुकोष्ठक डालने के लिए भी जा सकता है। यह शैली इंडेंटेशन को कोड के ब्लॉकों को अलग करने का एकमात्र तरीका बनाती है, लेकिन इसमें बिना सूचना वाली रेखाएं होने का लाभ है। इसे आसानी से लिस्प शैली कहा जा सकता है (क्योंकि यह शैली लिस्प कोड में बहुत आम है) या पायथन शैली (पायथन में कोई धनुकोष्ठक नहीं है, लेकिन लेआउट बहुत समान है, जैसा कि नीचे दिए गए कोड ब्लॉक में दिखाया गया है)। पायथन में लेआउट भाषा का एक हिस्सा है जिसे ऑफ़-साइड नियम कहा जाता है।
एक प्रोग्रामर यहां तक ​​कि एक ब्लॉक की अंतिम पंक्ति में समापन धनुकोष्ठक डालने के लिए भी जा सकता है। यह शैली अभिस्थापन को कोड के ब्लॉकों को अलग करने का एकमात्र तरीका बनाती है लेकिन इसमें बिना सूचना वाली पंक्ति होने का लाभ है। इसे आसानी से लिस्प शैली कहा जा सकता है (क्योंकि यह शैली लिस्प कोड में बहुत आम है) या पायथन शैली (पायथन में कोई धनुकोष्ठक नहीं है लेकिन लेआउट बहुत समान है जैसा कि नीचे दिए गए कोड ब्लॉक में दिखाया गया है)। पायथन में लेआउट भाषा का एक हिस्सा है जिसे ऑफ़-साइड नियम कहा जाता है।
<syntaxhighlight lang="c">
// In C
for (i = 0; i < 10; i++)
    {if (i % 2 == 0)
        {do_something(i);}
    else
        {do_something_else(i);
        do_third_thing(i);}}
</syntaxhighlight>
पायथन में
&nbsp;
<syntaxhighlight lang="python">
# In Python
for i in range(10):
    if i % 2 == 0:
        do_something(i)
    else:
        do_something_else(i)
        do_third_thing(i)
</syntaxhighlight>


<वाक्यविन्यास प्रकाश लैंग = सी>
&nbsp;
<syntaxhighlight lang="lisp">
;; In Lisp
(dotimes (i 10)
  (if (= (rem i 2) 0)
      (do-something i)
    (progn
      (do-something-else i)
      (do-third-thing i))))
</syntaxhighlight>


// सी में
[[Category:All articles with unsourced statements|Indent Style]]
 
[[Category:Articles with Curlie links|Indent Style]]
के लिए (i = 0; i <10; i++)
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
    {अगर (मैं% 2 == 0)
[[Category:Articles with invalid date parameter in template|Indent Style]]
        {कुछ करो(i);}
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
    अन्य
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
        {कुछ और करें(i);
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
        doThirdThing(i);}}
[[Category:CS1 English-language sources (en)|Indent Style]]
</वाक्यविन्यास हाइलाइट>
[[Category:Created On 17/02/2023|Indent Style]]
 
[[Category:Machine Translated Page|Indent Style]]
<वाक्यविन्यास लैंग = अजगर>
[[Category:Pages with script errors|Indent Style]]
# पायथन में
[[Category:Pages with syntax highlighting errors]]
मैं सीमा में (10) के लिए:
[[Category:Templates Vigyan Ready|Indent Style]]
    अगर मैं% 2 == 0:
        do_something (मैं)
    अन्य:
        do_something_else(मैं)
        do_third_thing(i)
</वाक्यविन्यास हाइलाइट>
 
<वाक्यविन्यास प्रकाश लैंग = लिस्प>
;; लिस्प में
(डॉटाइम्स (मैं 10)
    (अगर (= (रेम आई 2) 0)
        (करो-कुछ मैं)
        (प्रोग्न
            (करो-कुछ-और मैं)
            (करो-तीसरी-चीज़ 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> नीचे दिए गए दो खंड संकलक के लिए समान रूप से स्वीकार्य हैं:
 
<syntaxhighlight lang=haskell>
<वाक्यविन्यास लैंग = हास्केल>
braceless = do
  text <- getContents
  let
    firstWord = head $ words text
    bigWord = map toUpper firstWord
  putStrLn bigWord


ब्रेसलेस = करना
braceful = do
  पाठ <- सामग्री प्राप्त करें
   { text <- getContents
  होने देना
   ; let
    फर्स्टवर्ड = हेड $ शब्द टेक्स्ट
       { firstWord = head $ words text
    bigWord = मैप toUpper FirstWord
       ; bigWord = map toUpper firstWord
  putStrLn बिगवर्ड
 
कंजूस = करना
   {पाठ <- getContents
   ; होने देना
       { फर्स्टवर्ड = हेड $ शब्द टेक्स्ट
       ; bigWord = मैप toUpper FirstWord
       }
       }
   ; putStrLn बिगवर्ड
   ; putStrLn bigWord
   }
   }
</वाक्यविन्यास हाइलाइट>
</syntaxhighlight> 
हास्केल में लेआउट धनुकोष्ठक को बदल सकता है। प्राय: [[प्रक्रियात्मक प्रोग्रामिंग]] के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैं<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>


हास्केल में लेआउट धनुकोष्ठक को बदल सकता है।
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Pages with syntax highlighting errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


प्राय: [[प्रक्रियात्मक प्रोग्रामिंग]] के लिए धनुकोष्ठक और अर्धविराम छोड़े जाते हैं<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=apl></nowiki>
<syntaxhighlight lang=apl>
life←{⊃1⍵∨.∧3 4=+/+⌿¯1 0 1∘.⊖¯1 0 1⌽¨⊂⍵}
</syntaxhighlight>


जीवन←{⊃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 की इस शैली का उपयोग नहीं करते हैं अर्थात् जीएनयू एपीएल।


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


[[एपीएल (प्रोग्रामिंग भाषा)]] शैली सी एपीएल कोड की संक्षिप्त शैली जैसा दिखता है और प्राय: उनके कार्यान्वयन में उपयोग किया जाता है।<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 (प्रोग्रामिंग भाषा ) प्रोग्रामिंग भाषा  को भी इस शैली में लागू किया गया है। विशेष रूप से, APL के सभी कार्यान्वयन C की इस शैली का उपयोग नहीं करते हैं, अर्थात्: GNU APL और Dyalog APL।
[[Category:All articles with unsourced statements|Indent Style]]
 
[[Category:Articles with Curlie links|Indent Style]]
एपीएल शैली सी इंडेंटेशन के अतिरिक्त  प्राय: नामों को एकल या दोहरे वर्णों में छोटा किया जाता है: इंडेंटेशन की मात्रा को कम करने के लिए, और कई पंक्तियों में फैले भाव।
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Pages with syntax highlighting errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


== अन्य विचार ==
== अन्य विचार ==


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


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


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


vi परिवार के पाठ संपादकों में, ब्लॉक सीमाओं को ट्रैक करने का एक तरीका यह है कि टेक्स्ट कर्सर को धनुकोष्ठक में से किसी एक पर रखें और दबाएं <code>%</code> चाबी। इसके बाद कर्सर विपरीत ब्रेस पर कूद जाता है। चूंकि टेक्स्ट कर्सर <code>next</code> कुंजी (अर्थात।, <code>n</code> key) ने दिशात्मक पोजीशनिंग जानकारी को बनाए रखा (चाहे <code>up</code> या <code>down</code> कुंजी को पहले दबाया गया था), मैक्रो (कंप्यूटर विज्ञान) #कीबोर्ड और माउस मैक्रोज़ ( <code>.</code> key) का उपयोग टेक्स्ट कर्सर को अगले ब्रेस पर रखने के लिए किया जा सकता है,<ref>{{cite book |first=Linda |last=Lamb |title=Learning the vi editor |url=https://archive.org/details/learningvieditor00lamb |url-access=registration |publisher=O'Reilly}}</ref> एक उपयुक्त कोडिंग शैली दी गई। इसके बजाय, <code>%</code> कुंजी का उपयोग कोडिंग मानक को लागू करने के लिए किया जा सकता है।
vi परिवार के पाठ संपादकों में ब्लॉक सीमाओं को ट्रैक करने का एक तरीका यह है कि टेक्स्ट कर्सर को धनुकोष्ठक में से किसी एक पर रखें और दबाएं <code>%</code> चाबी। इसके बाद कर्सर विपरीत कोष्ठक पर कूद जाता है। चूंकि टेक्स्ट कर्सर <code>next</code> कुंजी (अर्थात<code>n</code>key) ने दिशात्मक स्थिति निर्धारण जानकारी को बनाए रखा (चाहे <code>up</code> या <code>down</code> कुंजी को पहले दबाया गया था)मैक्रो (कंप्यूटर विज्ञान) कीबोर्ड और माउस मैक्रोज़ (<code>.</code> key) का उपयोग टेक्स्ट कर्सर को अगले कोष्ठक पर रखने के लिए किया जा सकता है<ref>{{cite book |first=Linda |last=Lamb |title=Learning the vi editor |url=https://archive.org/details/learningvieditor00lamb |url-access=registration |publisher=O'Reilly}}</ref> एक उपयुक्त कोडिंग शैली दी गई। इसके अतिरिक्त <code>%</code> कुंजी का उपयोग कोडिंग मानक को लागू करने के लिए किया जा सकता है।


समापन ब्रेस के बाद जोड़े गए इनरेखा टिप्पणियों का उपयोग करने का दूसरा तरीका है:
समापन कोष्ठक के बाद जोड़े गए इनपंक्ति टिप्पणियों का उपयोग करने का दूसरा तरीका है:
<syntaxhighlight lang=c>
for (int i = 0; i < total; i++) {
    foo(bar);
} //for (i)
</syntaxhighlight>


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


<वाक्यविन्यास प्रकाश लैंग = सी>
इस पद्धति का प्रमुख नुकसान कई स्थानों पर डुप्लिकेट कोड बनाए रखना है।
अगर (एक्स <0) {
  बार (फू);
} // अगर (एक्स <0)
</वाक्यविन्यास हाइलाइट>


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


एक अन्य समाधान एक [[तह संपादक]] में लागू किया गया है, जो कोड के ब्लॉक को उनके इंडेंटेशन स्तर या कंपाउंड-स्टेटमेंट संरचना के माध्यम से छुपा या प्रकट कर सकता है। जब कर्सर (उपयोगकर्ता इंटरफ़ेस) एक के बगल में स्थित होता है, तो कई संपादक मेल खाने वाले कोष्ठक या धनुकोष्ठक को भी हाइलाइट करेंगे।
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Pages with syntax highlighting errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


=== वक्तव्य सम्मिलन ===
=== वक्तव्य सम्मिलन ===
मानक यूनिक्स रेखा संपादक, एड (टेक्स्ट एडिटर) का उपयोग करते समय के एंड आर शैली एक और सामान्य त्रुटि को रोकती है। कंट्रोल कथन और लूप ब्लॉक के खुलािंग ब्रेस के बीच गलती से डाला गया एक कथन लूप की बॉडी को सिंगल ट्रिप में बदल देता है।
मानक यूनिक्स पंक्ति संपादक एड (टेक्स्ट एडिटर) का उपयोग करते समय के एंड आर शैली एक और सामान्य त्रुटि को रोकती है। नियंत्रण कथन और लूप ब्लॉक के खुला कोष्ठक के बीच गलती से डाला गया एक कथन लूप की बॉडी को सिंगल ट्रिप में बदल देता है।
<syntaxhighlight lang=c>
for (int i = 0; i < 10; i++)
    whoops(bar);  /* repeated 10 times, with i from 0 to 9 */
{
    only_once();  /* Programmer intended this to be done 10 times */
} //for (i) ← This comment is no longer valid, and is very misleading!
</syntaxhighlight>


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


K&R शैली कंट्रोल कथन और खुलािंग ब्रेस को एक ही रेखा पर रखकर इस समस्या से बचा जाता है।
[[Category:All articles with unsourced statements|Indent Style]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)|Indent Style]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Pages with syntax highlighting errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]


== यह भी देखें ==
== यह भी देखें ==
* माध्यमिक संकेतन
* माध्यमिक संकेतन
* [[वाक्य - विन्यास पर प्रकाश डालना]]
* [[वाक्य - विन्यास पर प्रकाश डालना]]
* इंडेंटेशन (टाइपसेटिंग) # प्रोग्रामिंग में इंडेंटेशन
* अभिस्थापन (टाइपतय िंग) # प्रोग्रामिंग में अभिस्थापन


==संदर्भ==
==संदर्भ==
Line 637: Line 739:
* [http://syque.com/cstyle/index.htm ''C Style: Standards and Guidelines: Defining Programming Standards for Professional C Programmers''], Prentice Hall, {{ISBN|0-13-116898-3}} / {{ISBN|978-0-13-116898-5}} (full text is also online). Straker, David (1992).
* [http://syque.com/cstyle/index.htm ''C Style: Standards and Guidelines: Defining Programming Standards for Professional C Programmers''], Prentice Hall, {{ISBN|0-13-116898-3}} / {{ISBN|978-0-13-116898-5}} (full text is also online). Straker, David (1992).
* [http://milan.adamovsky.com/2010/08/contextual-indent.html Contextual Indent]
* [http://milan.adamovsky.com/2010/08/contextual-indent.html Contextual Indent]
* [https://www.gnu.org/prep/standards/standards.html GNU Coding Standards]
* [https://www.gnu.org/prep/standards/standards.html जीएनयू Coding Standards]
* {{Curlie|Computers/Programming/Development_Tools/Source_Code_Formatters/|Source Code Formatters}}
* {{Curlie|Computers/Programming/Development_Tools/Source_Code_Formatters/|Source Code Formatters}}


Line 655: Line 757:
श्रेणी:स्रोत कोड
श्रेणी:स्रोत कोड


 
[[Category:All articles with unsourced statements|Indent Style]]
[[Category: Machine Translated Page]]
[[Category:Articles with Curlie links|Indent Style]]
[[Category:Created On 17/02/2023]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Indent Style]]
[[Category:Articles with invalid date parameter in template|Indent Style]]
[[Category:Articles with unsourced statements from February 2007|Indent Style]]
[[Category:Articles with unsourced statements from February 2013|Indent Style]]
[[Category:Articles with unsourced statements from October 2016|Indent Style]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 17/02/2023|Indent Style]]
[[Category:Machine Translated Page|Indent Style]]
[[Category:Pages with script errors|Indent Style]]
[[Category:Templates Vigyan Ready|Indent Style]]

Latest revision as of 10:21, 15 September 2023

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

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

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

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

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

Brace placement Styles
while (x == y)
{
    something();
    something_else();
}
Allman
while (x == y)
  {
    something ();
    something_else ();
  }
GNU
while (x == y)
    {
    something();
    something_else();
    }
Whitesmiths
while (x == y) {
    something();
    something_else();
}
K&R
while (x == y) {
    something();
    something_else();
    }
Ratliff
while (x == y)
{   something();
    something_else();
}
Horstmann
while (x == y)
{   something();
    something_else(); }
Pico
while (x == y)
  { something();
    something_else(); }
Lisp
#define W(c,b) {while(c){b}}
W(x==y,s();se();)
APL

टैब, रिक्त स्थान और अभिस्थापन का आकार

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

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

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

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

उपकरण

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

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

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

शैलियाँ

के एंड आर शैली

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

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

int main(int argc, char *argv[])
{
    ...
    while (x == y) {
        something();
        something_else();

        if (some_error)
            do_correct(); // In K&R a single-statement block does not have braces.
        else
            continue_as_usual();
    }

    final_thing();
    ...
}

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

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

   /* कार्य प्रोटोटाइप के बिना मूल प्री-आईएसओ सी स्टाइल */
/* Original pre-ISO C style without function prototypes */
int main(argc, argv)
    int   argc;
    char  *argv[];
{
    ...
}

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

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

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

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

void check_negative(x) {
    if (x < 0) {
        puts("Negative");
    } else {
        nonnegative(x);
    }
}

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

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

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

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

int power(int x, int y)
{
        int result;

        if (y < 0) {
                result = 0;
        } else {
                result = 1;
                while (y-- > 0)
                        result *= x;
        }
        return result;
}

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

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

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

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

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

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

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

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

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

    if (x < 0) {
        puts("Negative");
        negative(x);
    }
    else {
        puts("Non-negative");
        nonnegative(x);
    }

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

    class Vector {
    public:
        Vector(int s) :elem(new double[s]), sz(s) { }   // construct a Vector
        double& operator[](int i) { return elem[i]; }   // element access: subscripting
        int size() { return sz; }
    private:
        double * elem;    // pointer to the elements
        int sz;           // number of elements
    };

स्ट्रॉस्ट्रुप स्तर को मांगपत्र नहीं करता है 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। ऐसे कार्य जो अपने शीर्ष-स्तरीय ब्लॉक में कोई स्थानीय चर घोषित नहीं करते हैं उनके शुरुआती ब्लॉक कोष्ठक के बाद भी एक खाली पंक्ति छोड़नी चाहिए।

यहाँ कुछ नमूने देखें:

while (x == y) {
        something();
        something_else();
}
final_thing();
if (data != NULL && res > 0) {
        if (JS_DefineProperty(cx, o, "data",
            STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)),
            NULL, NULL, JSPROP_ENUMERATE) != 0) {
                QUEUE_EXCEPTION("Internal error!");
                goto err;
        }
        PQfreemem(data);
} else {
        if (JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL),
            NULL, NULL, JSPROP_ENUMERATE) != 0) {
                QUEUE_EXCEPTION("Internal error!");
                goto err;
        }
}
static JSBool
pgresult_constructor(JSContext *cx, JSObject *obj, uintN argc,
    jsval *argv, jsval *rval)
{

        QUEUE_EXCEPTION("PGresult class not user-instantiable");

        return (JS_FALSE);
}

ऑलमैन शैली

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

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

while (x == y)
{
    something();
    something_else();
}

final_thing();

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

(* Example Allman code indentation style in Pascal *)
procedure dosomething(x, y: Integer);
begin
    while x = y do
    begin
        something();
        something_else();
    end;
end;

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

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

// while (x == y)
{
    something();
    something_else();
}

As is this:

    int c;
#ifdef HAS_GETCH
    while ((c = getch()) != EOF)
#else
    while ((c = getchar()) != EOF)
#endif
    {
        do_something(c);
    }

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

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

व्हाइटस्मिथ शैली

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

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

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

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

while (x == y)
    {
    something();
    something_else();
    }

final_thing();

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

एक उदाहरण:

if (data != NULL && res > 0)
    {
    if (!JS_DefineProperty(cx, o, "data", STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)), NULL, NULL, JSPROP_ENUMERATE))
        {
        QUEUE_EXCEPTION("Internal error!");
        goto err;
        }
    PQfreemem(data);
    }
else if (!JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL), NULL, NULL, JSPROP_ENUMERATE))
    {
    QUEUE_EXCEPTION("Internal error!");
    goto err;
    }

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

जीएनयू शैली

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

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

static char *
concat (char *s1, char *s2)
{
  while (x == y)
    {
      something ();
      something_else ();
    }
  final_thing ();
}

[24]

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

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

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

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

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

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

  जबकि (एक्स == वाई)
while (x == y)
{   something();
    something_else();
    //...
    if (x < 0)
    {   printf("Negative");
        negative(x);
    }
    else
    {   printf("Non-negative");
        nonnegative(x);
    }
}
final_thing();

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

पिको शैली

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

stuff(n):
{ x: 3 * n;
  y: do_stuff(x);
  y + x }

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

रैटलिफ शैली

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

 // In C
 for (i = 0; i < 10; i++) {
     if (i % 2 == 0) {
         do_something(i);
         }
     else {
         do_something_else(i);
         }
     }

or, in a markup language...

{|
|-
| lots of stuff...
      more stuff
      || alternative for short lines || etc. 
|}


{|
|-
... etc
|}

लिस्प शैली

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

// In C
for (i = 0; i < 10; i++)
    {if (i % 2 == 0)
        {do_something(i);}
     else
        {do_something_else(i);
         do_third_thing(i);}}

पायथन में  

# In Python
for i in range(10):
    if i % 2 == 0:
        do_something(i)
    else:
        do_something_else(i)
        do_third_thing(i)

 

;; In Lisp
(dotimes (i 10)
  (if (= (rem i 2) 0)
      (do-something i)
    (progn
      (do-something-else i)
      (do-third-thing i))))

हास्केल शैली

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

braceless = do
  text <- getContents
  let
    firstWord = head $ words text
    bigWord = map toUpper firstWord
  putStrLn bigWord

braceful = do
  { text <- getContents
  ; let
      { firstWord = head $ words text
      ; bigWord = map toUpper firstWord
      }
  ; putStrLn bigWord
  }

 

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

एपीएल शैली

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

life{1.3 4=+/+¯1 0 1∘.¯1 0 1¨}

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

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

अन्य विचार

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

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

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

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

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

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

for (int i = 0; i < total; i++) {
    foo(bar);
} //for (i)
if (x < 0) {
   bar(foo);
} //if (x < 0)

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

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

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

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

for (int i = 0; i < 10; i++)
    whoops(bar);   /* repeated 10 times, with i from 0 to 9 */
{
    only_once();   /* Programmer intended this to be done 10 times */
} //for (i) ← This comment is no longer valid, and is very misleading!

के एंड आर शैली नियंत्रण कथन और खुला कोष्ठक को एक ही पंक्ति पर रखकर इस समस्या से बचा जाता है।

यह भी देखें

संदर्भ

  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. 24.0 24.1 "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.


बाहरी संबंध



टैब और जगह


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