बॉयलरप्लेट के लिए एक रक्षा?


15

मेरे लिए, बॉयलरप्लेट कोड स्पष्ट रूप से खराब है। हालांकि मैं एक ऐसे डेवलपर से मिला हूं जो बॉयलरप्लेट को कम करने के किसी भी प्रयास में प्रतिरोध प्रदर्शित करता है। मुझे एहसास हुआ कि मैं आसानी से नहीं बना, अच्छी तरह से सोचा था कि मैं इस समय के लिए विकसित किया है घृणा पिछले तर्क।

ताकि मैं कम बायलरप्लेट का पक्ष लेने के लिए एक ठोस तर्क तैयार कर सकूं, कुछ प्रतिवाद क्या हैं? दूसरे शब्दों में, बॉयलरप्लेट के पक्ष में तर्क (यदि कोई हो) क्या हैं?

(मेरा मतलब है कि मुझे लगता है कि आम तौर पर बॉयलरप्लेट द्वारा मतलब है, लेकिन एक अच्छा उदाहरण गेटर्स है और जावा में बसता है।)


7
डुप्लिकेट कोड (बॉयलरप्लेट मानकर कॉपी / पेस्ट किया जाता है) के विरुद्ध तर्क: stackoverflow.com/a/2490897/1583
12'12 को Oded

1
@Oded: यह सही है। लेकिन आपने प्रश्न को गलत बताया। :) वह यह देखने का प्रयास कर रहा है कि क्या बॉयलरप्लेट कोड के लिए कुछ कहना है । मेरा अनुमान है कि वह बहुत अच्छी तरह से नुकसान के बारे में बताया गया है।
स्टीवन ज्यूरिस

3
@StevenJeuris - मैंने प्रश्न को पूरी तरह से पढ़ा। यही वजह है कि मैंने कोई जवाब नहीं दिया। मैं केवल तर्क के दूसरे पक्ष को जोड़ रहा हूं। जैसा कि ओ पी है "एक आसानी से गठन, अच्छी तरह से बाहर पिछले तर्क सोचा घृणा मैं समय के साथ इसके लिए विकसित किया है" अगली बार के लिए;)
Oded

2
बॉयलरप्लेट सौंदर्यपूर्ण रूप से मनभावन हो सकता है: en.wikipedia.org/wiki/This_Is_the_House_That_Jack_Built
लॉजिक

कई अच्छे उत्तर और टिप्पणियाँ जो एक दूसरे के पूरक हैं ... जिन्हें स्वीकार करना मुश्किल है।
अमूर्त

जवाबों:


15

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

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

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

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


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

6
मुझे लगता है कि बॉयलरप्लेट मानव पाठक के लिए भी हानिकारक है । जबरन लिखी जा रही पुनरावृत्ति, अर्थहीन पाठ के द्वारा, हम अन्य लोगों से कोड के प्रासंगिक हिस्सों का अवलोकन कर रहे हैं। अगर कुछ मददगार है, तो परिभाषा के अनुसार यह बॉयलरप्लेट नहीं है।
एंड्रेस एफ

1
@ जियोर्जियो: इसके विपरीत, यह सिर्फ मेरी राय से बहुत अधिक है; यह उन लोगों के विशाल बहुमत की राय है जिन्होंने कभी इसका अध्ययन करने की कोशिश की है। और जब "पढ़ना मुश्किल" स्वाभाविक रूप से पहली बार में एक राय का विषय है, तो यह है कि यह राय इतनी व्यापक रूप से साझा की जाती है कि यह एक तथ्य है।
मेसन व्हीलर

1
@ मेसन व्हीलर: प्रोग्रामिंग भाषा कैसे लोग अनुभव करते हैं यह अक्सर उनके पिछले अनुभव से प्रभावित होता है। जिन लोगों ने स्कीम में प्रोग्राम करना सीखा, उन्हें C या पास्कल अनाड़ी और पढ़ने में मुश्किल लगता है। दूसरी ओर, अधिकांश लोगों ने मुख्यधारा की भाषा में कार्यक्रम करना सीखा।
जियोर्जियो

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

7

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

मान लीजिए कि आपके पास कोड का एक टुकड़ा है जो कहता है

public ForTheBar(Foo foo)
{
    Bar bar = foo.bar();
    return bar.BeFooed();
}

इसका उपयोग आपके कोड में लगभग 2 स्थानों पर किया जाता है।

एक दिन कोई साथ आता है और कहता है "ठीक है, केवल इसी रास्ते में, हम चाहते हैं कि आप इसे फू करने से पहले बार को पकड़ें।"

और आपको लगता है कि "अच्छी तरह से यह सरल है।"

public ForTheBar(Foo foo, bool shouldIGrommit)
{
    Bar bar = foo.bar();

    if (shouldIGrommit)
    {
        bar.BeGrommitted();
    }

    return bar.BeFooed();
}

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

तो आप बस ऊपर दिए गए तरीके को कहें।

लेकिन तब आपका उपयोगकर्ता कहता है "ठीक है, रुको, तीसरे मामले में, हम चाहते हैं कि आप BeFooed को कॉल करने से पहले डूडल द बार पर जाएं।"

कोई बात नहीं, तुम सोचते हो, मैं ऐसा कर सकता हूं।

public ForTheBar(Foo foo, bool shouldIGrommit, bool shouldIDoodle)
{
    Bar bar = foo.bar();

    if (shouldIGrommit)
    {
        bar.BeGrommitted();
    }

    if (shouldIDoodle)
    {
        bar.BeDoodled();
    }

    return bar.BeFooed();
}

अचानक आपका कोड कम बॉयलर हो रहा है। शायद आपको बार-बार कोड की दो पंक्तियों को स्वीकार करना चाहिए था। अब तक आपके पास कोड के तीन टुकड़े होंगे, प्रत्येक 2-3 लाइनें लंबी और बहुत अधिक दोहराई हुई नहीं दिखेंगी।

इस सबने कहा, मैं इस बात का जवाब दूंगा कि "यह एक सामान्य मामला नहीं है, और जब ऐसा होता है, तो आप रिफ्लेक्टर कर सकते हैं।"

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

मैंने देखा है कि लोग IoC कंटेनरों के बारे में इसी तरह की बातें करते हैं।

यह कहने के लिए नहीं कि मैं उनसे सहमत हूं, लेकिन फिर भी यह एक उचित तर्क है।


2
मैंने आपके उत्तर के दूसरे भाग को प्राथमिकता दी। ; पी +1
स्टीवन ज्यूरिस

बस मेरा उदाहरण आपके लिए काफी हद तक समान है ... लगता है कि भले ही यह सामान्य ज्ञान नहीं है, यह थोड़ा सा प्रतीत होता है :)
kritzikratzi

Idk, यह आसान नहीं होगा और कोड डुप्लिकेट से बचने के लिए क्लीनर और चीजों को अधिक जटिल बनाने के बिना grommit और doodle फ़ंक्शंस को तर्क द्वारा मूल फ़ंक्शन के रूप में दूसरे, या बेहतर varadic, फ़ंक्शन तर्क द्वारा विस्तारित किया जाएगा। दूसरे शब्दों में, बूल स्विच और सशर्त जोड़ना केवल एक बुरा पैटर्न है। उदाहरण एक खराब पैटर्न (कोड दोहराव) की जगह लेता है जो एक बदतर है। यदि आप फ़ंक्शंस पास नहीं कर सकते हैं, तो यह एक ऐसा बिंदु होगा जहां दो अलग-अलग फ़ंक्शंस में रीफ़ैक्टरिंग एक विकल्प होता, पिछले कोड डुप्लीकेशन के बिना।
gschenk

6

दक्षता का विकास

आप इसकी शुरुआत करें:

<p>
    <label for="field">My field</label>
    <input type="text" id="field">
</p>

तब आप उस कष्टप्रद बॉयलर से छुटकारा पा लेते हैं और इसे एक समारोह में डालते हैं:

  1. createFieldHtml( id, label )

    यह अच्छा है, मैं अपने आप को बहुत सारी लाइनें बचा रहा हूँ!

  2. createFieldHtml( id, label, defaultValue )

    हाँ, मुझे एक डिफ़ॉल्ट मान भी चाहिए, जो जोड़ना आसान था।

  3. createFieldHtml( id, label, defaultValue, type )

    अच्छा, मैं इसे अब चेकबॉक्स के लिए भी उपयोग कर सकता हूं

  4. createFieldHtml( id, label, defaultValue, type, labelFirst )

    UX डिजाइनर ने कहा कि चेकबॉक्स के बाद लेबल होना चाहिए।

  5. createFieldHtml( id, label, defaultValue, type, labelFirst, isDate )

    यह अब जरूरत पड़ने पर एक तारीख लेने वाला प्रदान करता है। हम्म .. परांठे थोड़े से हाथ से निकल रहे हैं

  6. createFieldHtml( id, label, defaultValue, type, labelFirst, isDate, containerCssClasses )

    यह एक मामला था जहां मुझे सीएसएस कक्षाएं जोड़ने की आवश्यकता थी

  7. createFieldHtml( id, label, defaultValue, type, labelFirst, isDate, containerCssClasses, fieldCssClasses, disabled, clearAfter, helpText, uploadPath )

    aaaaaaaaaaaaaaaaaaaaa

बॉयलरप्लेट के बचाव में

मेरे पास इसे शब्दों में ढालने का कठिन समय है क्योंकि यह वास्तव में कुछ ऐसा है जिसे मैं अभी हाल ही में देख रहा हूं, इसलिए मैं एक सूची बनाऊंगा:

  1. यह मुझे लगता है कि डुप्लिकेट लाइनें होने का एक निश्चित डर है जो थोड़ा बाहर खींचता है। अगर यह सिर्फ कुछ पंक्तियाँ हैं तो यह कोई समस्या नहीं हो सकती है। कुछ चीजें स्वाभाविक रूप से "लगभग दोहराव" (जैसे ऊपर उदाहरण) हैं। मुझे लंबे समय में वहां अनुकूलन करने का बहुत कम मौका मिला है।
  2. लोग कहीं न कहीं कार्यक्षमता को कूटबद्ध करना पसंद करते हैं; अगर आप निष्पक्ष रूप से देखते हैं और ऐसा लगता है कि यह सिर्फ "गंदगी को छिपा रहा है" - संदेह है! यह कुछ अच्छे पुराने बॉयलरप्लेट का समय हो सकता है
  3. जब आपके पास एक फ़ंक्शन होता है जो अधिक से अधिक शक्तिशाली हो जाता है; यह इनपुट के आधार पर कई अलग-अलग निष्पादन पथ लेता है और अंततः बहुत कम करता है - यह बॉयलरप्लेट समय हो सकता है!
  4. जब आप अमूर्त की एक और परत के ऊपर अमूर्त की एक परत जोड़ते हैं, लेकिन सिर्फ अपने कोड को छोटा करने के लिए (अंतर्निहित परत को बदलने का मतलब नहीं है) - बॉयलरप्लेट का समय!
  5. जब आपके पास एक फ़ंक्शन होता है जो इतने सारे पैरामीटर लेता है कि आपको वास्तव में नामांकित पैरामीटर की आवश्यकता होती है - शायद यह बॉयलरप्लेट का समय है।

एक बात जो मैंने हाल ही में खुद से पूछी है वह यह है:
क्या मैं बिना किसी बदलाव के किसी अन्य प्रोजेक्ट में कॉपी और पेस्ट कर सकता हूं? यदि हाँ, तो एनकोपलेट करना या लाइब्रेरी में डालना ठीक है, यदि नहीं: यह बॉयलरप्लेट का समय है।

यह सामान्य धारणा का बहुत विरोध है कि बॉयलरप्लेट कॉपी और पेस्ट कोड है। मेरे लिए बॉयलरप्लेट कॉपी और पेस्टिंग के बारे में है, लेकिन हमेशा इसे थोड़ा छोटा करना होता है।


अद्यतन : मैं सिर्फ एक वास्तविक नाम के ऊपर अपना उदाहरण देते हुए एक लेख में आया हूं: "बहुत डीआरवाई-विरोधी पैटर्न"।

फ़ंक्शन को अधिक पैरामीटर मिलते हैं और विभिन्न मामलों में अपने व्यवहार को नियंत्रित करने के लिए तेजी से जटिल आंतरिक तर्क होते हैं। बहुत DRY फ़ंक्शंस करना आसान है। उनके पास बहुत सारे जटिल अगर-फिर तर्क हैं जो उपयोग की एक विस्तृत विविधता को संबोधित करने का प्रयास करते हैं। [...] इसके अलावा, कोड को दोहराना हमेशा एक बुरी बात नहीं है यदि कोड छोटा है और असतत कार्य करता है।

यह एक छोटा और दिलचस्प पाठ है, आप यहां लेख पा सकते हैं: टू ड्राई एंटी-पैटर्न


1
"जब आप अमूर्त की एक और परत के ऊपर अमूर्त की एक परत जोड़ते हैं, लेकिन सिर्फ अपने कोड को छोटा करने के लिए" सही है, तो आपको केवल अमूर्त की परतों को जोड़ना चाहिए जब पुन: उपयोग की संभावना है।
स्टीवन ज्यूरिस

4
+1। अपने आप को दोहराएं नहीं, लेकिन लगभग खुद को दोहराने से बचने के लिए अजीब लंबाई में न जाएं ।
जूलिया हेवर्ड

4

मैं बॉयलरप्लेट कोड से घृणा करता हूं , लेकिन बॉयलरप्लेट कोड को हटाने में सक्षम होने का मतलब यह नहीं है कि जाने का सबसे अच्छा तरीका है।

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

समस्या क्या है? यह नया सामान सीखने और वैकल्पिक समाधान तलाशने के लिए बहुत अच्छा है, लेकिन यह शायद सबसे अच्छा वाणिज्यिक निर्णय नहीं है।

WPF फ्रेमवर्क अच्छी तरह से प्रलेखित है। यह आपके बॉयलरप्लेट कोड को लिखने के लिए ठीक से दस्तावेज करता है। इस बॉयलरप्लेट कोड को हटाने का प्रयास एक अच्छा व्यायाम है, और कुछ ऐसा है जो निश्चित रूप से खोज के लायक है, लेकिन एमएसडीएन ऑफ़र के समान 'पॉलिश' के समान स्तर को प्राप्त करने में लंबा समय लगता है, जो हमारे पास हमेशा नहीं होता है।


हालांकि, मैं अभी भी इस परिणाम से काफी खुश हूं, और इस समय का आनंद अपने खाली समय की परियोजनाओं में ले रहा हूं। :)
स्टीवन ज्यूरिस

3
हर बार जब मैं WPF और उन निर्भरता गुणों को छूता हूं, तो मैं हमेशा इच्छा करता हूं कि C # के पास C ++ के मैक्रोज़ जैसा कुछ सरल हो। ज़रूर मैक्रोज़ गलत हाथों में गाली देते हैं, लेकिन वे यहाँ बहुत दोहराव को खत्म कर सकते हैं। मुझे अगली बार आपके AOP ढांचे पर एक नज़र डालनी होगी, मैं उन मैक्रों के लिए कामना करना शुरू कर देता हूँ :)
DXM

@DXM यदि आप करते हैं, और यह बुरी तरह से दुर्घटनाग्रस्त हो जाता है, तो मुझे दोष देने और त्रुटियों को पोस्ट करने के लिए मत भूलना। ; पी
स्टीवन ज्यूरिस

कोड स्निपेट ने मेरे लिए निर्भरता गुणों के लिए बहुत अच्छा काम किया।
कोडिज़्म

@Codism: ठीक है, वे कर रहे हैं एक समाधान, लेकिन मैं घृणा उन भी । :)
स्टीवन ज्यूरिस

1

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

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


2
यह बॉयलरप्लेट के पक्ष में एक तर्क कैसे है ?
क्रिस वेसलिंग

0

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

यदि प्राप्त किया जाता है, तो संगति कोड को अधिक सुलभ बनाता है "एक बार जब आप एक को देख चुके होते हैं, तो आपने उन सभी को देखा है", बनाए रखने के लिए सस्ता और रिफैक्टर, लेकिन इन सबसे ऊपर, विस्तार करने के लिए बहुत आसान है। जब आप एक पुस्तकालय लिखते हैं जिसमें कुछ बायलरप्लेट की आवश्यकता होती है, तो आपके पुस्तकालय की शक्ति के साथ-साथ आपने डेवलपर को भी दिया है:

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

जब आपकी लाइब्रेरी के उपभोक्ताओं की तात्कालिकता पर पकड़ होती है तो वे बॉयलरप्लेट कोड को लागू करने के लिए आसानी से निजी / विस्तार विधियों, मूल वर्गों या यहां तक ​​कि टेम्पलेट बना सकते हैं।


-3

बॉयलरप्लेट कोड के साथ एकमात्र वास्तविक समस्या यह है कि जब आप इसमें एक बग ढूंढते हैं तो आपको हर जगह ठीक करना होगा कि आपने इसका उपयोग उस जगह के बजाय किया था जिसे आपने पुन: उपयोग किया था

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.