GNU coding standards
जी. एन. यू. कोडिंग मानक उन कार्यक्रमों को लिखने के लिए नियमों और दिशानिर्देशों का एक समूह है जो जी. एन. यू. प्रणाली के भीतर लगातार काम करते हैं। जीएनयू कोडिंग मानक रिचर्ड स्टालमैन और अन्य जीएनयू परियोजना स्वयंसेवकों द्वारा लिखे गए थे। मानक दस्तावेज़ जीएनयू परियोजना का हिस्सा है और जीएनयू वेबसाइट से उपलब्ध है। हालाँकि यह सी में जीएनयू के लिए मुफ्त सॉफ्टवेयर लिखने पर केंद्रित है, लेकिन इसका अधिकांश भाग अधिक सामान्य रूप से लागू किया जा सकता है। विशेष रूप से, जी. एन. यू. परियोजना अपने योगदानकर्ताओं को हमेशा मानकों का पालन करने का प्रयास करने के लिए प्रोत्साहित करती है-चाहे उनके कार्यक्रम सी. कोड स्वरूपण में लागू किए गए हों या नहीं। यहाँ एक विशिष्ट उदाहरण दिया गया हैः इंट मेन (इंट आर्गक, चार * आर्गव []) {स्ट्रक्ट गिज्मो फू; फेच _ गिज्मो (& फू, आर्गव [1]); जाँचः यदि (foo.type = = मूमिन) लगाता है ("यह एक मूमिन है। "); अन्यथा यदि (foo.bar <GIZMO _ SNUFKIN _ ThRESHOLD/2।। (स्ट्रैकम्प (foo.class_name", स्नूफकिन ") = = 0) & & foo.bar <GIZMO _ SNUFKIN _ ThRESHOLD) (" यह एक स्नूफकिन है। "); अन्यथा {चार * बार्नी;/* फ़ाइल नाम में अंतिम स्लैश के बाद पहले वर्ण को इंगित करें। */इंट विल्मा;/* ब्रह्मांड का अनुमानित आकार। */int fred;/* 'बार' क्षेत्र का अधिकतम मान। */(foo.bar = GIZMO _ SNUFKIN _ TRESHOLD); भण्डार _ आकार (विल्मा); गोटो जाँच;) वापसी 0;} कथन के रूप में खंडों का सुसंगत उपचार (इंडेंटेशन के उद्देश्य के लिए) जीएनयू सी कोड स्वरूपण शैली की एक बहुत ही विशिष्ट विशेषता है; जैसा कि कोष्ठक से पहले अनिवार्य स्थान है। जी. एन. यू. शैली में प्रारूपित सभी कोड में यह गुण होता है कि प्रत्येक समापन ब्रेस, ब्रैकेट या कोष्ठक अपने संबंधित उद्घाटन परिसीमक के दाईं ओर या उसी कॉलम में दिखाई देता है। एक सामान्य सिद्धांत के रूप में, जीएनयू ईमैक्स को जीएनयू कोड स्वरूपण शैली पर एक विश्वसनीय प्राधिकरण माना जा सकता है। जैसे, यह वांछनीय है कि कोड का कोई भी टुकड़ा जो ईमैक्स द्वारा इंडेंट किए जाने पर बदसूरत दिखता है, उसे अधिक ईमैक्स-अनुकूल रूप में बदल दिया जाता है-उदाहरण के लिए, अतिरिक्त कोष्ठक डालकर। लंबी पंक्तियों को विभाजित करना "जब आप एक अभिव्यक्ति को कई पंक्तियों में विभाजित करते हैं, तो इसे एक ऑपरेटर के सामने विभाजित करें, एक के बाद नहीं।" उदाहरण के लिएः यदि (foo _ this _ is _ long & & बार> जीत (x, y, z) और शेष शर्त) टिप्पणियां मानक अंग्रेजी भाषा की टिप्पणियों के महत्व पर बहुत जोर देते हैंः कृपया टिप्पणियों को अंग्रेजी में जीएनयू कार्यक्रम में लिखें, क्योंकि अंग्रेजी एक ऐसी भाषा है जिसे सभी देशों के लगभग सभी प्रोग्रामर पढ़ सकते हैं। यदि आप अच्छी तरह से अंग्रेजी नहीं लिखते हैं, तो कृपया अंग्रेजी में टिप्पणी लिखें, फिर अन्य लोगों से उन्हें फिर से लिखने में मदद करने के लिए कहें। यदि आप अंग्रेजी में टिप्पणी नहीं लिख सकते हैं, तो कृपया अपने साथ काम करने के लिए किसी को ढूंढें और अपनी टिप्पणियों का अंग्रेजी में अनुवाद करें। टिप्पणियों में पूर्ण, बड़े अक्षर वाले वाक्य होने चाहिए, प्रत्येक के बाद दो रिक्त स्थान होने चाहिए (ताकि ईमैक्स बता सके कि एक वाक्य कहाँ समाप्त होता है और अगला कहाँ से शुरू होता है)। लंबे या जटिल प्रीप्रोसेसर शर्तों के लिए, प्रत्येक #else और #endif में नीचे (#else के लिए) या ऊपर (#endif के लिए) कोड की शर्त को समझाते हुए एक टिप्पणी होनी चाहिए। फाइल मानकों के लिए आवश्यक है कि सभी प्रोग्राम तब संचालित करने में सक्षम हों जब/usr और/आदि केवल पढ़ने के लिए लगे हों। इसलिए, आंतरिक उद्देश्यों के लिए संशोधित की जाने वाली फाइलें (लॉग फाइलें, लॉक फाइलें, अस्थायी फाइलें, आदि)। इसे/usr या/आदि में संग्रहीत नहीं किया जाना चाहिए। उन कार्यक्रमों के लिए एक अपवाद बनाया गया है जिनका काम सिस्टम कॉन्फ़िगरेशन फ़ाइलों को/आदि में अद्यतन करना है। एक अन्य अपवाद एक निर्देशिका में फ़ाइलों को संग्रहीत करने के लिए बनाया जाता है जब उपयोगकर्ता ने स्पष्ट रूप से उसी निर्देशिका में एक फ़ाइल को संशोधित करने के लिए कहा होता है। पोर्टेबिलिटी जीएनयू कोडिंग मानक पोर्टेबिलिटी के मुद्दे को इस तरह से परिभाषित करते हैंः यूनिक्स दुनिया में पोर्टेबिलिटी का अर्थ है 'यूनिक्स के बीच'; एक जीएनयू प्रोग्राम में इस तरह की पोर्टेबिलिटी वांछनीय है, लेकिन महत्वपूर्ण रूप से महत्वपूर्ण नहीं है। मानक के अनुसार, सुवाह्यता की समस्याएं बहुत सीमित हैं क्योंकि जीएनयू कार्यक्रमों को एक संकलक, जीएनयू सी संकलक के साथ संकलित करने के लिए डिज़ाइन किया गया है और केवल एक प्रणाली पर चलता है, जो जीएनयू प्रणाली है। हालांकि पोर्टेबिलिटी समस्या का एक रूप है, और यह तथ्य है कि मानक यह स्पष्ट करता है कि एक प्रोग्राम को विभिन्न सीपीयू प्रकारों पर चलना चाहिए। मानक कहता है कि जीएनयू 16-बिट प्रणालियों का समर्थन नहीं करता है और न ही करेगा, लेकिन सभी विभिन्न 32-और 64-बिट प्रणालियों को संभालना बिल्कुल आवश्यक है। आलोचना जीएनयू कोडिंग मानकों का उपयोग मुख्य रूप से जीएनयू परियोजनाओं द्वारा किया जाता है, हालांकि इसका उपयोग केवल जीएनयू परियोजनाओं तक ही सीमित नहीं है। लिनक्स कर्नेल कर्नेल कोड के लिए इस शैली को दृढ़ता से हतोत्साहित करता है, और शैली को अपमानजनक रूप से संदर्भित करता हैः "सबसे पहले, मैं जीएनयू कोडिंग मानकों की एक प्रति छापने का सुझाव दूंगा, और इसे न पढ़ें। उन्हें जला दें, यह एक महान प्रतीकात्मक इशारा है। स्टीव मैककोनेल, अपनी पुस्तक कोड कम्प्लीट में, इस शैली का उपयोग करने के खिलाफ भी सलाह देते हैं; वह एक कोड नमूने को चिह्नित करते हैं जो इसे "कोडिंग हॉरर" आइकन के साथ उपयोग करता है, जो विशेष रूप से खतरनाक कोड का प्रतीक है, और कहता है कि यह ब्रेसिज़ के लिए अतिरिक्त स्तर के इंडेंटेशन की आवश्यकता के कारण पठनीयता को बाधित करता है। यह भी देखें जी. एन. आई. टी. मानक संदर्भ बाहरी लिंक जी. एन. यू. वेबसाइट पर जी. एन. यू. कोडिंग मानक जी. एन. यू. कोडिंग मानकों के लिए एक्लिप्स कोड स्टाइल फॉर्मेटर मुक्त सॉफ्टवेयर संस्कृति और दस्तावेज़ कोडिंग मानक स्रोत कोड लेख उदाहरण सी कोड के साथ