कोडिंग कन्वेंशन: Difference between revisions

From Vigyanwiki
(Created page with "{{more footnotes|date=April 2021}} {{short description|Standards and guidelines for writing code}} {{Software development process}} कोडिंग सम्मेलन...")
 
No edit summary
Line 1: Line 1:
{{more footnotes|date=April 2021}}
{{short description|Standards and guidelines for writing code}}
{{short description|Standards and guidelines for writing code}}
{{Software development process}}
{{Software development process}}
कोडिंग सम्मेलन एक विशिष्ट [[प्रोग्रामिंग भाषा]] के लिए दिशानिर्देशों का एक सेट है जो उस भाषा में लिखे गए प्रोग्राम के प्रत्येक पहलू के लिए [[प्रोग्रामिंग शैली]], प्रथाओं और विधियों की अनुशंसा करता है। इन सम्मेलनों में आमतौर पर फ़ाइल संगठन, इंडेंट शैली, [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]], [[घोषणा (कंप्यूटर विज्ञान)]], कथन (प्रोग्रामिंग), [[व्हाइटस्पेस (कंप्यूटर विज्ञान)]], पहचानकर्ता नामकरण सम्मेलन, सर्वोत्तम कोडिंग प्रथाएं शामिल हैं: श्रेणी: प्रोग्रामिंग सिद्धांत, श्रेणी: अंगूठे के प्रोग्रामिंग नियम, वास्तु सर्वोत्तम अभ्यास आदि। ये [[सॉफ्टवेयर गुणवत्ता मॉडल]] के लिए दिशानिर्देश हैं। [[प्रोग्रामर]] को अपने स्रोत कोड की [[पठनीयता]] में सुधार करने और सॉफ़्टवेयर रखरखाव को आसान बनाने में सहायता के लिए इन दिशानिर्देशों का पालन करने की अत्यधिक अनुशंसा की जाती है। कोडिंग कन्वेंशन केवल एक सॉफ्टवेयर प्रोजेक्ट के मानव अनुरक्षकों और सहकर्मी समीक्षकों पर लागू होते हैं। कन्वेंशन को नियमों के एक प्रलेखित सेट में औपचारिक रूप दिया जा सकता है, जिसका पालन एक पूरी टीम या कंपनी करती है,<ref>{{Cite web|url=https://editorconfig.org/|title=EditorConfig डेवलपर्स को विभिन्न संपादकों और आईडीई के बीच लगातार कोडिंग शैलियों को परिभाषित करने और बनाए रखने में सहायता करता है।|last=|first=|date=|website=EditorConfig|access-date=}}</ref> या किसी व्यक्ति की आदतन कोडिंग प्रथाओं के रूप में अनौपचारिक हो सकता है। कोडिंग सम्मेलनों को [[ संकलक ]]्स द्वारा लागू नहीं किया जाता है।
कोडिंग नियम एक विशेष [[प्रोग्रामिंग भाषा]] के लिए एक दिशा-निर्देशिका होते हैं जो उस भाषा में लिखे गए एक प्रोग्राम के प्रत्येक पहलू के लिए [[प्रोग्रामिंग शैली]], अभ्यास और विधियों कीअनुशंसा करते हैं। इन परम्पराओ में सामान्यतः फ़ाइल संगठन, इंडेंटेशन, टिप्पणियां, घोषणाएं, कथन, [[व्हाइटस्पेस (कंप्यूटर विज्ञान)|व्हाइटस्पेस]], [[व्हाइटस्पेस (कंप्यूटर विज्ञान)|(कंप्यूटर विज्ञान)]] नामकरण परंपराएं, प्रोग्रामिंग प्रथाएं, प्रोग्रामिंग सिद्धांत, अंगूठे के प्रोग्रामिंग नियम, वास्तु सर्वोत्तम अभ्यास आदि सम्मिलित हैं। ये [[सॉफ्टवेयर गुणवत्ता मॉडल|सॉफ्टवेयर गुणवत्ता]] प्रारूप के लिए दिशानिर्देश हैं।
 
सॉफ़्टवेयर [[प्रोग्रामर]] को इन दिशा-निर्देशों का पालन करने की सबसे ज्यादा अनुशंसा की जाती है जिससे उनके स्रोत कोड की [[पठनीयता]] में सुधार हो और सॉफ़्टवेयर की रखरखाव आसान हो। कोडिंग परंपरा मात्र एक सॉफ्टवेयर प्रोजेक्ट के मानव अनुरक्षकों और सहकर्मी समीक्षकों पर लागू होते हैं। परम्पराओ को नियमों के एक प्रलेखित समुच्चय में औपचारिक रूप दिया जा सकता है, जिसका पालन एक पूरी टीम या कंपनी करती है,या किसी व्यक्ति की अभ्यस्त कोडिंग प्रथाओं के रूप में अनौपचारिक हो सकती है। कोडिंग नियम संकलक द्वारा प्रवर्तित नहीं किए जाते हैं।


== सॉफ्टवेयर रखरखाव ==
== सॉफ्टवेयर रखरखाव ==

Revision as of 21:02, 18 May 2023

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

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

सॉफ्टवेयर रखरखाव

कोडिंग परंपराओं का पालन करने के लिए सॉफ्टवेयर रखरखाव की लागत को कम करना अक्सर उद्धृत कारण है। जावा प्रोग्रामिंग भाषा के लिए कोड सम्मेलनों के परिचय में, सन माइक्रोसिस्टम्स निम्नलिखित तर्क प्रदान करता है:[1] <ब्लॉककोट> कई कारणों से प्रोग्रामर्स के लिए कोड कन्वेंशन महत्वपूर्ण हैं:

  • 40%-80% सॉफ्टवेयर के एक टुकड़े की जीवन भर की लागत रखरखाव के लिए जाती है।[2]
  • मूल लेखक द्वारा शायद ही कोई सॉफ्टवेयर अपने पूरे जीवन के लिए बनाए रखा जाता है।
  • कोड कन्वेंशन सॉफ़्टवेयर की पठनीयता में सुधार करते हैं, जिससे इंजीनियर नए कोड को अधिक तेज़ी से और अच्छी तरह से समझ पाते हैं।
  • यदि आप अपने स्रोत कोड को एक उत्पाद के रूप में शिप करते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि यह आपके द्वारा बनाए गए किसी भी अन्य उत्पाद की तरह अच्छी तरह से पैक और साफ है।

</ब्लॉककोट>

गुणवत्ता

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

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

कोडिंग मानक

जहां कोडिंग सम्मेलनों को विशेष रूप से उच्च गुणवत्ता वाले कोड का उत्पादन करने के लिए डिज़ाइन किया गया है, और फिर औपचारिक रूप से अपनाया गया है, तब वे कोडिंग मानक बन जाते हैं। विशिष्ट शैलियाँ, भले ही वे आमतौर पर अपनाई जाती हों, स्वचालित रूप से अच्छी गुणवत्ता कोड का उत्पादन नहीं करती हैं।

जटिलता में कमी

जटिलता सुरक्षा के खिलाफ जाने वाला एक कारक है।[3] जटिलता के प्रबंधन में निम्नलिखित मूल सिद्धांत शामिल हैं: परियोजना के विकास के दौरान लिखे गए कोड की मात्रा को कम करें। यह अनावश्यक कार्य को रोकता है जो अनावश्यक लागत को रोकता है, अपफ्रंट और डाउनस्ट्रीम दोनों। यह केवल इसलिए है क्योंकि यदि कोड कम है, तो न केवल एप्लिकेशन बनाना, बल्कि इसे बनाए रखना भी कम काम है।

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

कोड जितना अधिक जटिल होता है, उसके बग्गी होने की संभावना उतनी ही अधिक होती है, बग को ढूंढना उतना ही कठिन होता है और बग के छिपे होने की संभावना भी उतनी ही अधिक होती है।

पुनर्रचना

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

फुर्तीली सॉफ्टवेयर विकास योजना नियमित (या यहां तक ​​कि निरंतर) रिफैक्टरिंग के लिए इसे टीम सॉफ्टवेयर विकास प्रक्रिया का एक अभिन्न अंग बनाती है।[4]


कार्य स्वचालन

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

अनुरूप कोडिंग मानक, बदले में, माप को अधिक सुसंगत बना सकते हैं। स्रोत कोड टिप्पणियों के भीतर विशेष टैग (मेटाडेटा) का उपयोग अक्सर प्रलेखन को संसाधित करने के लिए किया जाता है, दो उल्लेखनीय उदाहरण जावाडोक और doxygen हैं। उपकरण टैग के एक सेट के उपयोग को निर्दिष्ट करते हैं, लेकिन एक परियोजना के भीतर उनका उपयोग परिपाटी द्वारा निर्धारित किया जाता है।

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

भाषा कारक

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

एक भाषा में एक सम्मेलन दूसरे में एक आवश्यकता हो सकती है। भाषा सम्मेलन व्यक्तिगत स्रोत फ़ाइलों को भी प्रभावित करते हैं। स्रोत कोड को संसाधित करने के लिए प्रयुक्त प्रत्येक संकलक (या दुभाषिया) अद्वितीय है। स्रोत पर एक कंपाइलर लागू होने वाले नियम अंतर्निहित मानक बनाता है। उदाहरण के लिए, पर्ल की तुलना में पायथन कोड बहुत अधिक लगातार इंडेंट है, क्योंकि व्हॉट्सएप (इंडेंटेशन) वास्तव में दुभाषिया के लिए महत्वपूर्ण है। पायथन ब्रेस सिंटैक्स पर्ल का उपयोग कार्यों को सीमित करने के लिए नहीं करता है। इंडेंटेशन में परिवर्तन डिलीमीटर के रूप में कार्य करता है।[7][8] टीसीएल, जो कार्यों को सीमित करने के लिए पर्ल या सी/सी ++ के समान ब्रेस सिंटैक्स का उपयोग करता है, निम्नलिखित की अनुमति नहीं देता है, जो सी प्रोग्रामर के लिए काफी उचित लगता है:

 set i = 0
 while {$i < 10} 
 {
    puts "$i squared = [expr $i*$i]"
    incr i
 }

कारण यह है कि टीसीएल में, घुंघराले ब्रेसिज़ का उपयोग केवल सी या जावा के कार्यों को सीमित करने के लिए नहीं किया जाता है। अधिक

आम तौर पर, कर्ली ब्रेसिज़ का उपयोग शब्दों को समूहबद्ध करने के लिए एक ही तर्क में किया जाता है।[9][10] टीसीएल में, 'जबकि' शब्द दो तर्क, एक शर्त और एक क्रिया लेता है। ऊपर दिए गए उदाहरण में, 'जबकि' अपना दूसरा तर्क, इसकी क्रिया याद कर रहा है (क्योंकि टीसीएल कमांड के अंत को सीमित करने के लिए न्यूलाइन वर्ण का भी उपयोग करता है)।

आम परंपराएं

बड़ी संख्या में कोडिंग परंपराएँ हैं; देखें बी: कई उदाहरणों और चर्चा के लिए कंप्यूटर प्रोग्रामिंग/कोडिंग शैली। सामान्य कोडिंग परिपाटियों में निम्नलिखित क्षेत्र शामिल हो सकते हैं:

कोडिंग मानकों में सीईआरटी सी कोडिंग मानक, मिश्रा सी, उच्च अखंडता सी ++ शामिल हैं, नीचे दी गई सूची देखें।

यह भी देखें

संदर्भ

  1. "Code Conventions for the Java Programming Language : Why Have Code Conventions". Sun Microsystems, Inc. 1999-04-20.
  2. Robert L. Glass: Facts and Fallacies of Software Engineering; Addison Wesley, 2003.
  3. Tom Gillis. "Complexity is the enemy of security".
  4. Jeffries, Ron (2001-11-08). "What is Extreme Programming? : Design Improvement". XP Magazine. Archived from the original on 2006-12-15.
  5. Hoff, Todd (2007-01-09). "C++ Coding Standard : Naming Class Files".
  6. FIFE coding standards
  7. van Rossum, Guido (2006-09-19). Fred L. Drake, Jr (ed.). "Python Tutorial : First Steps Towards Programming". Python Software Foundation. Archived from the original on 2008-09-28. Retrieved 2014-08-17.
  8. Raymond, Eric (2000-05-01). "Why Python?". Linux Journal.
  9. Tcl Developer Xchange. "Summary of Tcl language syntax". ActiveState.
  10. Staplin, George Peter (2006-07-16). "Why can I not start a new line before a brace group". 'the Tcler's Wiki'.


कोडिंग मानकों की सूची

भाषाओं के लिए कोडिंग परंपराएं

परियोजनाओं के लिए कोडिंग सम्मेलन

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

  1. "टीआईओबीई - सी कोडिंग मानक". tics.tiobe.com. Retrieved 2021-03-11.
  2. "सी ++ कोडिंग मानक". tics.tiobe.com. Retrieved 2021-03-11.
  3. "सी # कोडिंग मानक". tics.tiobe.com. Retrieved 2021-03-11.
  4. "TIOBE - जावा कोडिंग स्टैंडर्ड". tics.tiobe.com. Retrieved 2021-03-11.