क्या अधिकांश प्रोग्रामर कॉपी और पेस्ट कोड रखते हैं? [बन्द है]


48

मैंने बहुत पहले ही यह जान लिया था कि किसी और के कोड को काटने और चिपकाने में लंबे समय तक लगता है कि इसे स्वयं लिखना है। मेरी राय में जब तक आप इसे वास्तव में नहीं समझेंगे, कट एंड पेस्ट कोड में संभवतः ऐसे मुद्दे होंगे जो हल करने के लिए एक बुरा सपना होंगे।

मुझे गलत मत समझो, मेरा मतलब है कि अन्य लोगों का कोड ढूंढना और उससे सीखना आवश्यक है, लेकिन हम इसे केवल अपने ऐप में पेस्ट नहीं करते हैं। हम अपने ऐप में अवधारणाओं को फिर से लिखते हैं

लेकिन मैं लगातार ऐसे लोगों के बारे में सुन रहा हूं जो कट और पेस्ट करते हैं, और वे इसके बारे में बात करते हैं जैसे कि यह आम बात है। मैं अन्य लोगों द्वारा टिप्पणियों को भी देखता हूं जो संकेत करते हैं कि यह आम बात है।

तो, क्या अधिकांश प्रोग्रामर कोड काटते और चिपकाते हैं?


10
यहां तक ​​कि अगर मुझे पता है कि मुझे कुछ करना है, तो मैं अक्सर सर्वोत्तम तरीकों के लिए कोड नमूनों की खोज करूंगा। एक बार जब आप कोड पढ़ सकते हैं, तो आप जल्दी से बता सकते हैं कि क्या आप पाते हैं कि आपकी योजना क्या थी।
निकोल

हाल ही में कट एंड पेस्ट के संबंध में एक प्रश्न आया था। आप इसकी जाँच क्यों नहीं करते ?
नौरगुल

अगर मैं इसे समझूं।
जॉनी

जवाबों:


46

दो सामान्य मामले:

एक परियोजना से दूसरी परियोजना के लिए:

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

एक ही प्रोजेक्ट के अंदर: एक ही प्रोजेक्ट में कॉपी और पेस्ट करना आमतौर पर एक अच्छा विचार नहीं है। यह एक बुरी गंध है जो कोड की नकल की जा रही है, बस कहीं एक विधि / कक्षा में होनी चाहिए और बार-बार कॉल की जानी चाहिए। इसके कुछ अपवाद हैं, लेकिन आम तौर पर प्रोग्रामर को यह सोचना चाहिए: " क्या कोई ऐसा तरीका है जिससे मैं इस कोड को मानकीकृत कर सकता हूं जिसे मैं कॉपी कर रहा हूं? "।


5
आम तौर पर यह सच है, जब तक आप कोड नहीं लिख रहे हैं जिसमें एंटी-पैटर्न की आवश्यकता होती है, जैसा कि एंटीमैपरिंग कोड के साथ हो सकता है, जैसे कि सॉफ़्टवेयर लाइसेंसिंग के लिए।
रोब पर्किन्स

+1 हाँ, मैंने ये दोनों काम किए हैं। मैंने लंबे समय तक एक ही प्रोजेक्ट के लिए कट और पेस्ट किए गए कोड को एक ही प्रोजेक्ट के भीतर से नहीं किया है (हालाँकि मैं इसे कम दबाव में लॉग इन बग के साथ कमबैक करने के लिए शायद ही कभी कबूल करूं)। उपयोगिता वर्गों के लिए, कॉपी करने की मेरी परियोजना अब पूर्ण फ़ाइलों की प्रतिलिपि बनाने के लिए पृथक है।
जॉन मैकइंटायर

2
डेटाबेस कोड लिखते समय, मैं आमतौर पर इसमें से कुछ को काटता हूं और एक नए फ़ंक्शन में पेस्ट करता हूं और वांछित परिणाम प्राप्त करने के लिए खुद को एसक्यूएल संशोधित करता हूं और कहा जाता है कि डेटाबेस कॉल करने के लिए कुछ आवश्यक शर्तें फिर से टाइप करने के साथ खुद को चिंता न करें। हालांकि सामान्य तौर पर मैं दोनों टिप्पणियों से सहमत हूं।
क्रिस

1
@ क्रिस: कॉपी और उसके दिल को संशोधित करना बस इसे चिपकाने की तुलना में बहुत अलग है।
लोरेन Pechtel

1
@ लॉरेन Pechtel: फिर भी इसमें कोड को कॉपी करने और चिपकाने का कार्य शामिल है।
क्रिस

37

अधिकांश प्रोग्रामर ऐसा करते हैं, लेकिन इसका मतलब यह नहीं है कि आपको चाहिए

मेरा एक प्रोग्रामिंग मंत्र है: "यदि मैं कोड को कॉपी और पेस्ट कर रहा हूं, तो मैं कुछ गलत कर रहा हूं" । अनिवार्य रूप से, डीआरवाई

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

उस कोड के साथ कुछ और समय निवेश करने के बाद मैं निम्नलिखित के साथ समाप्त होता हूं:

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

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

आपको क्या करना चाहिए: रिफैक्टर एएसएपी

कोई भी सही कोड नहीं लिखता है, भले ही वह काम करता हो, भले ही आप कॉपी और पेस्ट न कर रहे हों और यह आपका अपना कोड हो, अगर आप इससे संतुष्ट नहीं हैं, तो बस टिप्पणियों में एक नोट डालिए (उदाहरण के लिए एक डॉकब्लॉक "@todo") याद दिलाने के लिए अपने आप को क्या रिफ्लेक्टर और क्यों ... भले ही आप इसे अपने आप को रिफलेक्टर न करें, यह अनुरक्षक के लिए खुशी और कुल निराशा के बीच अंतर बन सकता है।

आखिरकार, यदि आप कॉपी और पेस्ट करते हैं, तो आप अंत में अच्छे कोड के साथ समाप्त हो जाएंगे ।

अच्छा कोड

XKCD के माध्यम से


15
मैंने अक्सर "रिफ्लेक्टर को" बाद में "रिफ्लेक्टर कभी नहीं" में देखा है, या इससे भी बदतर "मैं इस तरह के एक हॉट शॉट हूं कुछ अन्य SUCKER रिफ्लेक्टर और मेरे लगभग-लेकिन-नहीं-ठीक-ठीक कोड को ठीक कर सकता है"। मैं इसे ठीक सामने करने में विश्वास करता हूं, क्योंकि कल की तरह ही यह नहीं है - यह कभी नहीं आता है।
जल्‍दी से जल्‍दी

1
@quickly_now - re: "मैं इतनी हॉट हूं कि कुछ अन्य SUCKER रिफ्लेक्टर कर सकती है और मेरे लगभग-लेकिन-नहीं-काफी-ठीक कोड को ठीक कर सकती है ..." मैं आपको सिर्फ यह व्यक्त नहीं कर सकता कि मैं उन झटके से कितना नफरत करता हूं।
जॉन मैकइंटायर

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

1
टीम में जितने अधिक लोग, उतने अधिक "रिफ्लेक्टर बाद में" "रिफ्लेक्टर कभी नहीं" बन जाते हैं, जहाँ तक मैं देख सकता था: /
वाइल्डपीक्स

8

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

मैं हमेशा कोड से कुछ सीखने के लिए समय निकालता हूं, इसलिए मेरे लिए यह सीखने का एक शानदार तरीका है और पहिया को फिर से लगाने से बचने के लिए।


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

मैं सभी दूसरों से सीखने के लिए हूं, लेकिन क्या आप यह नहीं पाते कि जब तक आप किसी विशेष समस्या की तलाश में न हों, बस अपने सिर को इधर-उधर लपेटते रहें कि दूसरे व्यक्ति ने जो किया है वह अधिक समय लेने वाला है जो सिर्फ खरोंच से कर रहा है? (ध्यान दें कि मैं 'कोड' के बारे में बात कर रहा हूं, कक्षाओं की तरह कार्यक्षमता की पूरी इकाइयां नहीं, आदि ...)
जॉन मैकइंटायर

@ जॉन मैकइंटायर हो सकता है, लेकिन आमतौर पर जब मैं कुछ छोटे कोड स्निपेट में पॉप करता हूं, तो मैं इसे तब तक मोल्ड करता हूं जब तक कि मैं इससे संतुष्ट नहीं हो जाता। अक्सर इसे अनुकूलित करने की आवश्यकता होती है (एक फ़ंक्शन में, अधिक सामान्य, बेहतर, अनुकूलित आदि)।
मार्टिन विकमन

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

6

मैं यहां अन्य लोगों के कोड को कॉपी / पेस्ट करने के बारे में बात करने जा रहा हूं। अपने निजी पुस्तकालय से अपने काम के कुछ हिस्सों को हथियाना उचित खेल है। मैं उन्हें जानता हूं और उन्हें परिभाषा से समझता हूं।

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

बाहर जाने और पूरे तरीकों या प्रणालियों को हथियाने के रूप में उन्हें मेरी परियोजना में पेस्ट करने के लिए-और इसे कॉल करना कुछ ऐसा है जो मुझे समझ में नहीं आता है। दूसरे दिन स्टैकऑवरफ्लो पर एक सवाल था जिसने इस तरह से कुछ करने के साथ समस्या को पूरी तरह से चित्रित किया।

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

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


1
हो सकता है कि कई प्रोग्रामर वास्तविक कोड की बड़े पैमाने पर कॉपी / पेस्ट न करें, लेकिन वे कोड की एक भी लाइन को देखे बिना खुशी से तैयार लाइब्रेरी (मुक्त या अन्यथा) का लाभ
उठाएंगे

1
@ स्टुअर्ट सच, लेकिन मुझे लगता है कि वहाँ भेद यह है कि लाइब्रेरी को प्रोग्रामर के अपने काम के रूप में दावा नहीं किया जाएगा। और ईमानदारी से, जब तक पुस्तकालय काम करता है और वह करता है जो मुझे करने की आवश्यकता है, मुझे विशेष रूप से इसके स्रोत पर ताकना करने की परवाह नहीं है। (यह मानते हुए कि परिश्रम अन्यथा पुस्तकालय के प्रथम स्थान पर कितना प्रतिष्ठित / विश्वसनीय है, पर किया जाता है।)
एडम लीयर

एक तरह से यह आशय की बात है, प्रकाशक और उपभोक्ता दोनों की ओर से :)
hplbsh

@stuart - मैं इस चर्चा में एक पुस्तकालय शामिल नहीं करूंगा क्योंकि यह एक एकजुट इकाई है ... वास्तव में 'खो' कोड नहीं है, अगर आपको पता है कि मेरा क्या मतलब है।
जॉन मैकइंटायर

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

4

खराब: कोड के एक ही ब्लॉक को बार-बार कॉपी और पेस्ट करना

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

अच्छा: कोड का एक ब्लॉक कॉपी करना जो काम करने के लिए जाना जाता है

DRY (खुद को दोहराएं नहीं) यहां भी लागू होता है, बस एक अलग अर्थ में। IE, आपके द्वारा पहले से किए गए काम को दोहराएं नहीं। यदि आपने कोड का एक भाग लिखने, डिबग करने, उसका परीक्षण करने के लिए समय लिया है, और यह एक उत्पादन कोडबेस में काम करने के लिए सिद्ध है; आप इसे फिर से उपयोग नहीं करने के लिए गूंगा हो जाएगा।

अधिकांश लोग कॉपी-पेस्टिंग को एक बुरा रैप देते हैं क्योंकि कई शुरुआती प्रोग्रामर अपना समय नेट पर बिताते हैं और अन्य लोगों के कोड की एक मिशमा को कॉपी / पेस्ट करते हुए यह समझे बिना करते हैं कि यह वास्तव में क्या करता है।

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

यदि आप अपने पुराने कोड को पहले नहीं समझते हैं, तो कुछ पल के लिए टिप्पणी पढ़ें और अपने आप को फिर से परिचित करें। यदि आपकी टिप्पणी चूसना ... ठीक है, यह पूरी तरह से एक और मुद्दा है।


कोड को कॉपी और पेस्ट करने के बजाय, इसे पुन: प्रयोज्य तरीके से लिखना पूरी तरह से संभव है। फिर इसे कॉपी और पेस्ट करने के बजाय इसका उपयोग करें।
ब्योर्न 19

1
@BjornTipling हाँ, आमतौर पर कोड को पुन: प्रयोज्य कार्यों में नीचे तोड़ना बेहतर होता है जब तक कि इस प्रक्रिया में जटिलता नहीं आती है और कोड का पुन: उपयोग नहीं किया जाएगा
इवान प्लाइस

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

3

कोड लिखने के 25 वर्षों के बाद, कई बार ऐसा हुआ है (जब मैंने पिछले नियोक्ता के लिए लिखे गए कोड तक कोई पहुंच नहीं है) मैं चाहता हूं कि मैं कट और पेस्ट कर सकता हूं। अब तक यह बहुत दुर्लभ है (और पढ़ते रहें)।

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

आमतौर पर एक सादा ओले कट और पेस्ट पूरी तरह से अनुचित है - इसकी अधिक कटौती और अवधारणा, या एल्गोरिथ्म को पेस्ट करना, जो महत्वपूर्ण रहा है।

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

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

समझ के बिना, आपको वास्तव में पता नहीं है कि आपने वास्तव में क्या फेंका है, न केवल खुश बल्कि दुखी परिस्थितियों या इनपुट स्थितियों के तहत भी। कभी-कभी यह मायने नहीं रखता कि आप भाग्यशाली हैं। और कभी-कभी यह बहुत लंबे समय तक दर्द करता है।


4
दूसरी ओर, ऐसे प्रोग्रामर हैं जो कोड को स्वयं लिखते हैं और फिर भी इसे समझ नहीं पाते हैं ...
hplbsh

3

एक सामान्य स्थिति है जहां आप मूल रूप से उत्पादक होने के लिए ऐसा करना चाहते हैं।

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


सुधार: एक वास्तविक बीलीफ़ है जहाँ आप मूल रूप से सोचते हैं कि आप उत्पादक होने के लिए ऐसा करना चाहते हैं। इसलिए आप किसी चीज़ को रिलीज़ करने के लिए अपने तरीके को कॉपी और पेस्ट करते हैं जो किसी तरह से काम करता है और क्षति की मरम्मत के लिए आपके रास्ते में आने वाले कष्टों को दूर करता है।
न्यूटोपियन

3

एक नए प्रोग्रामर के रूप में (मेरी पहली नौकरी में 4 महीने), मैं काफी मदद करने पर भरोसा करता हूं (चाहे एसओ या अन्य जगहों से)। मैं दूसरों के कोड को नेत्रहीन कॉपी और पेस्ट नहीं करने का एक बिंदु बनाता हूं। यहां तक ​​कि अगर प्रदान किया गया कोड वह है जो मैं उपयोग कर रहा हूं, तो मैं इसे अपने कार्यक्रम में टाइप करूंगा और फिर यह सुनिश्चित करने में थोड़ा समय बिताऊंगा कि मैं पूरी तरह से समझता हूं कि यह क्या करता है और इसके कारण क्या हैं।

मैं यह सुनिश्चित करना चाहता हूं कि मैं लगातार सीख रहा हूं और केवल कट और पेस्ट में विशेषज्ञ नहीं हूं


1

इस विषय में मेरी बहुत सारी भावनाएँ हैं, और मैं ईमानदारी से नहीं कह सकता कि उनमें से कोई भी पूरी तरह से उद्देश्यपूर्ण है।

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

पहिया को फिर से मजबूत नहीं करने के लिए तर्क हैं - फिर से, यह समझ में आता है, सिद्धांत रूप में। लेकिन अगर आप उस कोड से गहन रूप से परिचित होने में समय नहीं लेते हैं जिसे आप काट रहे हैं और चिपका रहे हैं, तो आपको नहीं पता कि इस समस्या को हल करने का कोई बेहतर तरीका है या नहीं, आपको नहीं पता कि कोड में कीड़े हैं या नहीं। । क्या होगा यदि आप जिस पहिया को चिपका रहे हैं वह टूट गया है?

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

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

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

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

इस उत्तर को जॉन पर लक्षित नहीं करने पर, मुझे पता है कि जब आप इस तरह के विषयों की बात करते हैं, तो आप बहुत ही नैतिक रूप से इच्छुक होते हैं, इसलिए यह वास्तव में प्रश्न की दिशा में केवल एक सामान्य शेख़ी है।

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


आपके ब्लॉग पोस्ट के कोड का उपयोग करने पर आपकी क्या राय है जो आपको होने वाली एक विशेष समस्या को हल करते हैं? क्या भौतिक रूप से उस कोड को कॉपी / पेस्ट करना है जिसे आप नैतिकता का उल्लंघन मानते हैं या अपनी परियोजना के समाधान को उसी श्रेणी में आते हैं? क्या "उधार लिया गया" कोड का आकार (यानी एक पूरा कार्यक्रम / फ़ंक्शन बनाम एक छोटा सा स्निपेट) आपकी राय को प्रभावित करता है?
एडम लेअर

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

मुझे इस्तेमाल किए जा रहे ट्यूटोरियल या ब्लॉग पोस्ट के कोड की कोई समस्या नहीं है - बस यह समझें कि यह क्या करता है। शायद अगर यह पोस्ट किया गया था, तो यह उपलब्ध है।
जल्दी_नौज

"आप जॉन पर इस जवाब को लक्षित नहीं कर रहे हैं" ... मैंने वास्तव में नहीं सोचा था कि आप ... वैसे भी कम से कम तब तक नहीं जब तक मैं इसे नहीं पढ़ता। LOL
जॉन मैकइंटायर

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


0

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

कॉपी और पेस्ट का सार्वभौमिक पूर्ण कानून अच्छा या बुरा होने के बजाय, इसका उपयोग कब करना चाहिए, यह देखना चाहिए।

प्रतिलिपि और पेस्ट के लिए नियम हैं: क्या आप तेजी से आगे बढ़ रहे हैं हर जगह प्रचार करें। हर जगह कई गुना समान कोड फैलाने के बजाय लाइब्रेरी का उपयोग करने के एक छोटे से प्रारंभिक निवेश के लिए।

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


मैं निश्चित रूप से सामान्य पुस्तकालय के बारे में सहमत हूं, लेकिन क्या आपको उस कोड को काटना और पेस्ट करना चाहिए, या इसे खरोंच से बनाना चाहिए?
जॉन मैकइंटायर

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

0

ज्यादातर मामलों में, आपको नेट पर मिलने वाला कोड आपके सटीक उद्देश्यों के अनुरूप नहीं होगा।

जो कुछ अपने आप में बहुत कुछ कर रहा है वह कोड को किसी से कॉपी करना है, इसे बहुत सार से अलग करना और फिर कोड जोड़ना जब तक यह मेरी आवश्यकताओं को पूरा नहीं करता है। मैं हमेशा अपने नामकरण सम्मेलनों और कोडिंग शैली से मेल खाता हूं।

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


-1

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


-1

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

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


पुनर्निवेश के लिए +1। मैं खुद को कॉपी पेस्ट करने के बजाय इंटरनेट से समय पुनर्लेखन कोड का एक भार भी पाता हूं। मुझे लगता है कि मैं ऐसा इसलिए करता हूं क्योंकि मैं समय सीमा तक सीमित नहीं हूं। मैं स्वतंत्र रूप से अपने आप से सीख सकता हूं और जब मैं चाहता हूं तो मैं सीख सकता हूं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.