गैर-प्रोग्रामर को कॉपी-पेस्ट प्रोग्रामिंग के खतरों को समझाने के लिए एक अच्छा, संक्षिप्त तरीका क्या है? [बन्द है]


27

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

बस स्पष्ट करने के लिए (नीचे Jaroslav के उत्तर के आधार पर) - मैं यहां कोड स्निपेट का उपयोग करने के बारे में बात नहीं कर रहा हूं; मैं जो कुछ भी देख रहा हूं (विचलित रूप से) कोड के विशाल स्वैट्स की प्रतिलिपि-और-पेस्टिंग, या कुछ उपयोगकर्ता डेटा (इनलाइन एसक्यूएल क्वेरी के साथ पूर्ण) पाने के लिए कोड का दस-लाइन का टुकड़ा दर्जनों PHP या ASP.NET पृष्ठों में चिपकाया जाता है। तो, एक ही परियोजना में कहीं और से डुप्लिकेट कोड।

अपडेट: यहां कई वास्तव में अच्छे उत्तर हैं; मैंने टिप्पणियों में समझाया है कि मैंने स्कॉट व्हिटलॉक के उत्तर को क्यों चुना, लेकिन मैं अत्यधिक, अत्यधिक सलाह की सिफारिश कर सकता हूं कि यदि आप उन ग्राहकों के साथ काम कर रहे हैं जो विनिर्माण से परिचित हैं।


हम्म, यह एक कठिन है। यह क्लासिक कार / बिल्डिंग / फैक्ट्री एनालॉग्स में अच्छी तरह से अनुवाद नहीं करता है .....
whatsisname

3
अमेरिकी आम कानून में रिपब्लिकन और डेमोक्रेट पार्टी के संदर्भ होने की कल्पना करें, और फिर तीसरे को जोड़ते हुए किसी एक पक्ष का नाम बदलकर ... कई कानूनों को फिर से लिखना होगा।
जॉब

कैसे के बारे में सादृश्य: कॉपी-पेस्टिंग कोड (असुरक्षित, खराब संरचित, आदि) जिसे आप विकी, मंचों से नहीं समझते हैं, आदि ई-मेल अटैचमेंट (वायरस, स्पाईवेयर, स्पैम, इत्यादि) खोलने से है। तीसरे पक्ष?
साकिस

@ अल्फा: कॉपी-पेस्ट कोड जरूरी नहीं कि कचरा कोड हो। यह आपके द्वारा लिखे गए कार्यालय के आदमी का अच्छा कोड हो सकता है। कॉपी-पेस्ट किए गए कोड के साथ समस्या यह है कि यह बहुत जल्दी एक असहनीय रखरखाव / डिबगिंग दुःस्वप्न बन जाता है।
whatsisname

1
@ हाइफ़: इसके बाद कोष्ठक अनुभाग
zapisname

जवाबों:


36

यह ऐसा है ... आपके घर में एक घड़ी है। महान! आप जानते हैं कि यह क्या समय है, लेकिन आपको इसे देखने के लिए हमेशा उस एक कमरे में जाना होगा।

लेकिन निश्चित रूप से आप जानना चाहते हैं कि हर समय उस कमरे में जाने के बिना क्या समय है, इसलिए आप कुछ और घड़ियां खरीदते हैं, और आप उन्हें अपने घर के आसपास वितरित करते हैं। इन घड़ियों में से प्रत्येक स्वतंत्र हैं। वे सभी अपना-अपना समय रखते हैं। इसका मतलब है की:

  • जब दिन की बचत के समय के कारण समय बदलता है, तो आपको उन सभी को बदलना होगा
  • यहां तक ​​कि जब वे सभी सेट होते हैं, तो वे सभी थोड़े अलग होते हैं और शायद ही कभी पूरी तरह से सहमत होते हैं। समय के साथ वे बह गए।

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

कॉपी-पेस्ट प्रोग्रामिंग अधिक स्वतंत्र घड़ियों को खरीदने की तरह है। यह पैमाना नहीं है।


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

38

कल्पना कीजिए कि आप एक विमान डिजाइन कर रहे हैं। आपको सिंगल इंजन जेट मिल गया है। यह अच्छा बिकता है। अब आप समुद्र के पार लंबे धुंध के लिए 4 इंजन वाला विमान डिजाइन करने जा रहे हैं।

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

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

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

कोडिंग और पेस्टिंग कोड घटक भागों के डुप्लिकेट चित्र होने के अनुरूप है, चाहे वह एक स्क्रू या एक इंजन हो। आप मूलभूत टुकड़ों तक घटकों को सार करना चाहते हैं जो कि जितना संभव हो उतना पुन: उपयोग किया जाता है।

इंजन को डुप्लिकेट न करें, बस उस कोड को लिखें जो इंजन को विंग में बदलता है।


11
अब, कल्पना कीजिए कि आप नंबर 4 इंजन को अन्य तीन से अलग पाते हैं। क्या यह अंतर इरादा था? टेकऑफ़ के तुरंत बाद बाएं मुड़ने के कारण एक निश्चित टोक़ मुद्दे का मुकाबला करने के लिए डिज़ाइन किया गया है? या यह नकल करने में गलती थी?
डेविड थॉर्नले

5
महान सादृश्य ... लेकिन अगर किसी को कॉपी / पेस्ट कोड समझने में कठिनाई होती है ... जेट इंजन बस उतना ही मुश्किल हो सकता है :)
स्टीवन एवर्स

आपको इस सादृश्य के लिए जेट इंजन के बजाय ठोस ईंधन रॉकेट के बारे में बात करनी चाहिए। इस तरह, आप के साथ खत्म कर सकते हैं, "देखें? रॉकेट विज्ञान की तरह।"
detly

यह उपमा नहीं है। ब्लूप्रिंट्स वस्तुतः मैकेनिकल कलाकृतियों के लिए कोड होते हैं।
intuited

7

आपको इसे उसी संसाधन को साझा करने के संदर्भ में समझाना होगा।

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


7

"अरे देखो सब सर्जरी कुछ हद तक है समान अधिकार ?, तो तुम कोई फ़र्क नहीं पड़ेगा अगर मैं बेतरतीब ढंग से नकल शल्य अनुदेश अपने ऑपरेशन के लिए अलग सर्जन से अलग प्रक्रियाओं के लिए?"


1
महान!!! सर्जरी सही चाकू से की जाती है? मुझे आप पर मस्तिष्क की सर्जरी करने के लिए कसाई चाकू का उपयोग करने दें।
आदित्य पी

1
@ आदित्यगामीप्रोग्रामर: जब आपके पास एकमात्र उपकरण कसाई चाकू होता है, तो सब कुछ हैम जैसा दिखता है।
जॉय एडम्स

6

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

सादृश्य की तलाश में, पहले हमें प्रोग्रामिंग और कॉपी पेस्ट के खतरों पर विचार करना होगा :

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

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

अमूर्त परिभाषाओं को स्थापित करने और फिर निष्पादन में उन परिभाषाओं का उपयोग करने के लिए आगे बढ़ने के विचार पर आधारित है। बिना परिभाषा के दुनिया कैसी होगी?

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

केवल कॉपी करने के लिए एक जगह होती है जब टुकड़ा की नकल की जा रही है स्थायी। अन्यथा, हर कॉपी को पूरी तरह से अलग करने के लिए परीक्षण किया जाता है - परीक्षण किया जाता है, बनाए रखा जाता है, और अलग से उन्नत किया जाता है।

अमूर्त सभी शाखाओं को एक ट्रंक में एक साथ बांधकर और छोटी शाखाओं या यहां तक ​​कि पत्तियों को संशोधनों को अलग करके लड़ता है।


2
मुझे ढालना सादृश्य पसंद है, बाकी, मैं डरता हूं, गैर-तकनीकी उपयोगकर्ताओं के साथ ज्यादा मदद करने वाला नहीं हूं।
Matthieu M.

@ मैथ्यू - मुझे नहीं पता कि आप पहली बुलेट पॉइंट्स का जिक्र कर रहे हैं, लेकिन मैं यह नहीं कह रहा था कि वे एनालॉग्स थे, मैं वर्णन कर रहा था कि एक डेवलपर के लिए एक अच्छी प्रक्रिया के बारे में मैं क्या सोचता हूं।
निकोल

4

मुझे लगता है कि आप डुप्लिकेट कोड के बारे में बात कर रहे हैं, कॉपी पेस्टिंग (स्निपेट और इसी तरह का उपयोग करके) नहीं।

यहाँ एक इतिहास की किताब से एक सादृश्य है, जो इसे बहुत अच्छी तरह से दिखाता है। गुटेनबर्ग के प्रेस से पहले भिक्षु बैठे थे और हाथ से किताबें लिख रहे थे और एक ही किताब को बार-बार लिख रहे थे। भिक्षुओं ने जो किताबें लिखीं, वे अक्सर बग के साथ थीं और गुटेनबर्ग की बदौलत इस समस्या को खत्म कर दिया गया।

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

जेफ http://www.codinghorror.com/blog/2009/04/a-modest-proposal-for-the-copy-and-paste-school-of-code-reuse से कॉपी पेस्ट के बारे में एक भयानक लेख है । एचटीएमएल

पीएस मुझे पता है कि गुटेनबर्ग से पहले प्रिंटिंग प्रेस था।


2

गैर-प्रोग्रामर के लिए मुझे लगता है कि हम व्यापारिक लोगों से बात कर रहे हैं, इसलिए मैं संक्षिप्त और पैसे की वास्तविकताओं को शामिल करूंगा।

  1. कोड की प्रत्येक पंक्ति में आपके पैसे खर्च होते हैं (चाहे लिखा हो या कॉपी किया गया हो)
  2. हर बग में आपकी हर लाइन ज्यादा खर्च होती है।
  3. कोड की प्रत्येक पंक्ति संभावित बग को जोड़ती है
  4. डुप्लिकेटेड कोड = डुप्लिकेट बग्स
  5. डुप्लिकेटेड बग लगभग कभी भी एक ही परीक्षण चक्र में नहीं पाए जाते हैं।

काट-छाँट करना = धन जलाना।


1

क्या मैं इस प्रश्न का उत्तर नहीं दे सकता, लेकिन आप वास्तव में यहाँ एक सादृश्य की आवश्यकता नहीं है, और प्रत्येक विकास मुहावरे या पैटर्न के लिए सही सादृश्य खोजने की कोशिश कर रहे हैं और अक्सर काउंटर उत्पादक लगता है। यह सपाट पैरों के साथ योग करने की कोशिश कर रहा है ...

ऐसे कुछ कारण हैं जिनकी वजह से कॉपी / पेस्ट की समस्या होती है, यह मौजूदा बग्स को नए चिपके हुए क्षेत्रों में प्रचारित करता है, कुछ वातावरणों में जहां इसे एक प्रदर्शन बढ़ाने वाला माना जाता था, यह वास्तव में अब धीमा है (मैं उदाहरण प्रदान कर सकता हूं अगर किसी को दिलचस्पी है, लेकिन यह जेआईटी के लिए नीचे आता है और क्या आपको वास्तव में लगता है कि आप एक आधुनिक संकलक की तुलना में अधिक स्मार्ट हैं?)।

यह दिखाता है कि डेवलपर या तो आलसी है या स्वार्थी या दोनों। यदि यह एक ऐसी टीम है जिसे आप इस समय एक टीम में लड़ रहे हैं, तो इस टीम में आपकी स्थिति पर निर्भर करता है (टीम लीड / जूनियर देव, एसएनआर देव, क्या कभी) आपको इसे ठीक करने की आवश्यकता है, संभवतः आपके संगठन के भीतर मध्यस्थता द्वारा।

संपादित करें: नीचे दी गई टिप्पणी के आलोक में, यह है कि यह तीसरे पक्ष की ओर से तीसरे पक्ष के कोड की समीक्षा कर रहा है (या शायद चौथी पार्टी भी :)) कुछ उपयोगी चीजें हैं जो मैं उम्मीद से जोड़ सकता हूं।

पहला, जब तीसरे पक्ष के लिए कोड का उत्पादन किया गया था, तो क्या उनके पास कोई मीट्रिक थी? उदाहरण के लिए कोड (एलओसी) की लाइनें।

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

किसी भी तरह से, आप कोड की गुणवत्ता का आकलन कर रहे हैं, ठीक है, किसी भी पेस्ट को कॉपी करें, "डेवलपर अमूर्त और / या प्रोग्राम फ्लो कंट्रोल डिज़ाइन की पर्याप्त समझ दिखाए" की श्रेणी में आता है:

टिप्पणी: डेवलपर अमूर्तता की किसी भी समझ को दिखाने में विफल रहा, और कार्यक्रम प्रवाह नियंत्रण के लिए उनका दृष्टिकोण त्रुटियों से ग्रस्त था। आप यहां "साइक्लोमैटिक जटिलता" पेश कर सकते हैं। यह वास्तव में समझने में काफी आसान है, और रास्ते में मुझे लगता है कि मुझे लगता है कि मुझे इसका जवाब मिल गया होगा: D Yay मेरे लिए।

ओके साइक्लोमैटिक जटिलता इस तरह है। आपके पास एक नक्शा है। इसमें आपका प्रारंभ स्थान और हर संभव गंतव्य है। यह बहुत कुछ नहीं है। सोचो, कार पार्क, कैफे, शौचालय। साइक्लोमैटिक जटिलता विभिन्न मार्गों की संख्या का एक उपाय है जो किसी भी गंतव्य के लिए आपकी शुरुआत की स्थिति में लाने के लिए हैं।

कॉपी और पेस्ट किया गया कोड संभवतः साइक्लोमैटिक जटिलता को बढ़ाएगा क्योंकि इसमें बार-बार तर्क शामिल होंगे जो इसे अपने स्वयं के ब्लॉक (या विधि) नाम से सार कर सकते हैं।

उचित लगता है?


स्पष्ट होने के लिए, यह वह कोड है जो अन्य संगठनों ने लिखा है, और यह समीक्षा के लिए हमारे संगठन में लाया जा रहा है। तो यह मेरे संगठन के भीतर की लड़ाई नहीं है, लेकिन मुझे किसी दूसरे संगठन से लोगों (गैर-प्रोग्रामर) को समझने की ज़रूरत है।
EZ हार्ट

यह जानना उपयोगी है और इससे मुझे उम्मीद है कि उपयोगी होने के लिए बहुत आसान हो जाता है :) मैं एक संपादन जोड़ूंगा।
इयान

क्षमा करें, लंबा संपादन, लेकिन मुझे लगता है कि tldr कॉपी है और पेस्ट किया गया कोड एक कोड गंध है जो साइक्लोमैटिक जटिलता (अन्य चीजों के बीच) में वृद्धि को इंगित करता है और साइक्लोमैटिक जटिलता एक रूपक का उपयोग करके वर्णन करना बहुत आसान है।
इयान

1

किसी चीज के लिए एक अंग्रेजी शब्द लें। अब हर बार कल्पना करें कि आप उस चीज़ का वर्णन करना चाहते हैं, आपने केवल शब्द के बजाय पूर्ण शब्दकोश की परिभाषा का उपयोग किया है। दूसरों को आपको समझना कितना आसान होगा?

मैं एक ऐसी चीज़ की मानसिक छवि बनाता हूं जो मौजूद नहीं है या यह मामला नहीं है (कल्पना करें) यह एक ऐसी क्रिया या स्थिति का संकेत देता है जो दूसरे पर सशर्त है; वसीयत का सरल अतीत। पिछले समय के सापेक्ष निरर्थकता का संकेत। अतीत में एक कार्रवाई का संकेत देना जो बार-बार या आमतौर पर हुआ (होगा) काफी आसान नहीं होगा ; आवश्यकता को पूरा करने या सहने या सहने (कठिन) के लिए बहुत शारीरिक या मानसिक प्रयास की आवश्यकता होती है

यह वास्तविक कोड के उदाहरण के पहले और बाद में एक वास्तविक दिखाने के लिए भी चोट नहीं करेगा जो दोहराव को हटाने के लिए फिर से शुरू किया गया है।


मैं लेस्ली नीलसन शैली देने के लिए दूसरे पैराग्राफ का पूर्वाभ्यास करने की सलाह देता हूं :-)
कार्ल बेवेलफेल्ट

1

सुरक्षा और कोड अखंडता चिंताएं भी हैं।

जैसा कि यहां दिखाया गया है , क्लिपबोर्ड में स्थानांतरित किए गए यूनिकोड वर्णों में दुर्भावनापूर्ण डेटा को एम्बेड करना संभव है।

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


0

विभिन्न मार्गों के कुछ जोड़े हैं जिन्हें मैं यहाँ देख सकता हूँ:

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

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

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


0

कल्पना कीजिए कि आपके पास समूह के छात्र और स्कूल के लिए नियमों का एक समूह है। नियमों को एक आम जगह पर पोस्ट करने के बजाय सभी छात्रों को आपको एक-एक नियमों की एक प्रति सौंपना चाहिए। प्रत्येक छात्र से कहा जाता है कि वे पत्र को नियमों की अपनी प्रति का पालन करें।

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


0

कोई आपको संलग्न दस्तावेज़ टेम्पलेट के साथ एक ईमेल भेजता है। जब तक टेम्प्लेट नहीं बदलते तब तक इसे बेझिझक इस्तेमाल करते रहें। चिंता न करें, वे आपको एक ताज़ा प्रतिलिपि भेजना नहीं भूलेंगे।


0

CoCoMo लागत मॉडल।

http://en.wikipedia.org/wiki/COCOMO

प्रयास एप्लाइड (E) = a * (KLOC) ** b, जहां b> 1.0

उस घातांक का अर्थ है कोड की लाइनों की संख्या की तुलना में तेजी से बढ़ने / बनाए रखने / समर्थन / पुनर्लेखन का प्रयास ।


0

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


0

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

इसके साथ तीन प्रमुख समस्याएं हैं:

  1. यह बग-मुक्त कोड में कभी परिणाम नहीं देता है। कभी।
  2. यदि वे इसे लिखते समय कोड को नहीं समझते थे, तो वे डीबग करते समय कभी भी इसका पता नहीं लगा सकते थे। अतिरिक्त लागत पर केवल कोई और ही उनके द्वारा की गई गंदगी को साफ कर सकता है।
  3. यदि वे कोड लिखने के बारे में सोचने से बचते हैं, तो वे सीखने से बचते हैं। यदि वे सीखने से बचते हैं, तो वे कभी भी एक अच्छे प्रोग्रामर नहीं होंगे। यदि वे कभी भी एक अच्छा प्रोग्रामर नहीं बनने जा रहे हैं, तो वे आपकी टीम में क्यों हैं?

0

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

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