बॉयलरप्लेट कोड

From alpha
Jump to navigation Jump to search

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

उत्पत्ति

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

प्रस्तावना

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

<वाक्यविन्यास प्रकाश लैंग = पर्ल>

  1. !/usr/bin/perl

चेतावनियों का उपयोग करें; सख्त उपयोग; </वाक्यविन्यास हाइलाइट>

पहली पंक्ति एक शेबैंग (यूनिक्स) है, जो फ़ाइल को पर्ल स्क्रिप्ट के रूप में पहचानती है जिसे सीधे यूनिक्स/लिनक्स सिस्टम पर कमांड लाइन पर निष्पादित किया जा सकता है। अन्य दो निर्देशात्मक (प्रोग्रामिंग) चेतावनियों और सख्त मोड को चालू करना है, जो फैशनेबल पर्ल प्रोग्रामिंग शैली द्वारा अनिवार्य हैं।

यह अगला उदाहरण एक C/C++ प्रोग्रामिंग लैंग्वेज बॉयलरप्लेट है, जिसमें गार्ड शामिल है#include रक्षक।

<वाक्यविन्यास लैंग = सीपीपी>

  1. ifndef MYINTERFACE_H
  2. MYINTERFACE_H को परिभाषित करें

...

  1. अगर अंत

</वाक्यविन्यास हाइलाइट>

यह संकलक को यह बताने के लिए एक वैश्विक ध्वज की जाँच करता है और सेट करता है कि क्या फ़ाइल myinterface.h पहले से ही शामिल है। एक मॉड्यूल के संकलन में कई अन्योन्याश्रित फाइलें शामिल हो सकती हैं, यह एक ही हेडर को कई बार संसाधित करने से बचता है (जिससे एक ही नाम के साथ कई परिभाषाओं के कारण त्रुटियां हो सकती हैं)।

जावा और इसी तरह के प्लेटफॉर्म में

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

जावा

<वाक्यविन्यास प्रकाश लैंग = जावा> पब्लिक क्लास पेट {

   निजी स्ट्रिंग नाम;
   निजी व्यक्ति स्वामी;
   सार्वजनिक पालतू (स्ट्रिंग नाम, व्यक्ति स्वामी) {
       यह नाम = नाम;
       यह मालिक = मालिक;
   }
   सार्वजनिक स्ट्रिंग getName () {
       वापसी का नाम;
   }
   सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) {
       यह नाम = नाम;
   }
   सार्वजनिक व्यक्ति getOwner () {
       वापसी का मालिक;
   }
   सार्वजनिक शून्य सेटस्वामी (व्यक्ति स्वामी) {
       यह मालिक = मालिक;
   }

} </वाक्यविन्यास हाइलाइट>

इस उदाहरण में अधिकांश बॉयलरप्लेट JavaBeans की आवश्यकताओं को पूरा करने के लिए मौजूद हैं। यदि चर नाम और स्वामी को जावा कीवर्ड्स की सूची के रूप में घोषित किया गया था, तो विधि (कंप्यूटर प्रोग्रामिंग)#Accessor.2C म्यूटेटर और प्रबंधक विधियों की आवश्यकता नहीं होगी।

बॉयलरप्लेट की मात्रा को कम करने के लिए, कई रूपरेखाएँ विकसित की गई हैं, उदा। जावा के लिए लोम्बोक।[4] ऊपर जैसा कोड जावा एनोटेशन का उपयोग करके लोम्बोक द्वारा ऑटो-जेनरेट किया गया है, जो मेटाप्रोग्रामिंग का एक रूप है:

<वाक्यविन्यास प्रकाश लैंग = जावा> @AllArgsConstructor @ गेट्टर @ सेटर पब्लिक क्लास पेट {

   निजी स्ट्रिंग नाम;
   निजी व्यक्ति स्वामी;

}

</वाक्यविन्यास हाइलाइट>

स्कैला

कुछ अन्य प्रोग्रामिंग भाषाओं में कम बॉयलरप्लेट के साथ वही चीज़ हासिल करना संभव हो सकता है, जब भाषा में ऐसे सामान्य निर्माणों के लिए अंतर्निहित समर्थन हो। उदाहरण के लिए, उपरोक्त जावा कोड के समकक्ष कोड की केवल एक पंक्ति का उपयोग करके स्काला (प्रोग्रामिंग भाषा) में व्यक्त किया जा सकता है:

<वाक्यविन्यास प्रकाश लैंग = स्काला> केस क्लास पेट (var नाम: स्ट्रिंग, var स्वामी: व्यक्ति) </वाक्यविन्यास हाइलाइट>

सी #

या सी शार्प (प्रोग्रामिंग भाषा) में | सी # स्वचालित संपत्ति (प्रोग्रामिंग) का उपयोग कर कंपाइलर जेनरेटेड बैकिंग फ़ील्ड के साथ:

<वाक्यविन्यास प्रकाश लैंग = csharp> सार्वजनिक वर्ग पालतू {

   सार्वजनिक स्ट्रिंग नाम {प्राप्त करें; तय करना; }
   सार्वजनिक व्यक्ति स्वामी {प्राप्त करें; तय करना; }

} </वाक्यविन्यास हाइलाइट>

सी # 9.0 से शुरू होने पर रिकॉर्ड्स का उपयोग करने का अवसर होता है जो स्वचालित रूप से गुणों के साथ कक्षाएं उत्पन्न करता है:

<वाक्यविन्यास प्रकाश लैंग = csharp> सार्वजनिक रिकॉर्ड पेट (स्ट्रिंग नाम, व्यक्ति स्वामी); </वाक्यविन्यास हाइलाइट>

विधि बॉयलरप्लेट

घोषणाओं के अलावा, ओओपी भाषाओं में विधि (कंप्यूटर प्रोग्रामिंग) भी बॉयलरप्लेट की मात्रा में योगदान करती है। लोकप्रिय जावा परियोजनाओं पर 2015 के एक अध्ययन से पता चलता है कि 60% विधियों को इसके 4.6% टोकन की घटना से विशिष्ट रूप से पहचाना जा सकता है, जिससे शेष 95.4% बॉयलरप्लेट तर्क के लिए अप्रासंगिक हो जाता है। शोधकर्ताओं का मानना ​​है कि यह परिणाम सामान्य रूप से प्रक्रियात्मक भाषाओं में उपनेमकाओं में अनुवाद करेगा।[5]


एचटीएमएल

एचटीएमएल में, निम्नलिखित बॉयलरप्लेट को मूल खाली टेम्पलेट के रूप में प्रयोग किया जाता है और यह अधिकांश वेब पेजों में मौजूद है: <वाक्यविन्यास लैंग = एचटीएमएल 5> <!DOCTYPE html> <एचटीएमएल लैंग = एन> <सिर>

 <मेटा वर्णसेट = यूटीएफ -8 />
 <शीर्षक>परीक्षण</शीर्षक>

</ सिर> <शरीर>

</शरीर> </html> </वाक्यविन्यास हाइलाइट> WHATWG HTML लिविंग स्टैंडर्ड परिभाषित करता है कि <html>, <head> और <body> अधिकांश परिस्थितियों में टैग सुरक्षित रूप से छोड़े जा सकते हैं।[6] <meta charset="UTF-8"> ई> टैग तकनीकी रूप से बेमानी है जब एक HTTP शीर्षलेख में वर्ण एन्कोडिंग भेजने के लिए कॉन्फ़िगर किए गए वेब सर्वर से सीधे आता है, हालांकि यह तब उपयोगी हो जाता है जब HTML प्रतिक्रिया एक में सहेजी जाती है .html फ़ाइल, कैश, या वेब संग्रह।[7] Google की HTML/CSS शैली मार्गदर्शिका अनुशंसा करती है कि सभी वैकल्पिक टैग हटा दिए जाएं,[8] जिसके परिणामस्वरूप बहुत कम बॉयलरप्लेट होता है। विश्वव्यापी वेब संकाय उस तत्व को बताता है <title> खाली नहीं होना चाहिए:[9] <वाक्यविन्यास लैंग = एचटीएमएल 5> <!DOCTYPE html> <शीर्षक>परीक्षण</शीर्षक> </वाक्यविन्यास हाइलाइट>

पायथन

पायथन (प्रोग्रामिंग भाषा) में, निम्नलिखित बॉयलरप्लेट कोड को संशोधित करने के लिए उपयोग किया जा सकता है यदि कोड को केवल मॉड्यूल संदर्भ में या बाहर निष्पादित किया जा सकता है। <वाक्यविन्यास लैंग = अजगर> अगर __name__ == '__main__':

   # यहां रखी गई कोई भी चीज मॉड्यूल के संदर्भ में कभी भी निष्पादित नहीं की जाएगी।
   उत्तीर्ण

अगर __नाम__! = '__मुख्य__':

   # यहां रखी गई कोई भी चीज केवल एक मॉड्यूल के संदर्भ में निष्पादित की जाएगी।
   उत्तीर्ण

</वाक्यविन्यास हाइलाइट>


यह भी देखें


संदर्भ

  1. Lämmel, Ralf; Jones, Simon Peyton (2003). "Scrap your boilerplate: a practical design pattern for generic programming". Proceedings of the 2003 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation. TLDI '03. New York: ACM. pp. 26–37. doi:10.1145/604174.604179. ISBN 9781581136494. S2CID 9472305.
  2. "Boilerplate". Dictionary.com. Retrieved 2018-01-27.
  3. "Boilerplate". Merriam-Webster. Retrieved 2018-01-27.
  4. Frankel, Nicolas (2009-12-07). "Lombok reduces your boilerplate code". DZone.com. Retrieved 2017-08-02.
  5. Martin Velez; Dong Qiu; You Zhou; Earl T. Barr; Zhendong Su (5 Feb 2015). "On the Lexical Distinguishability of Source Code [was: A Study of "Wheat" and "Chaff" in Source Code]". arXiv:1502.01410 [cs].
  6. "HTML Standard - The HTML syntax - Optional tags". WHATWG. 2017-05-05. Retrieved 2017-05-05.
  7. "Is the charset meta tag required with HTML5?". stackoverflow.com. Retrieved 2017-05-05.
  8. "Google HTML/CSS Style Guide". google.github.io. Retrieved 2017-05-05.
  9. "HTML page has non-empty title". www.w3.org. Retrieved 22 July 2021.