বেশিরভাগ প্রোগ্রামাররা কোড কপি করে পেস্ট করে? [বন্ধ]


48

আমি খুব তাড়াতাড়ি শিখেছি যে অন্য কারও কোডটি কাটা এবং আটকানো দীর্ঘায়িত হয়ে যায় যা এটি নিজেই লেখেন। আমার মতে আপনি যদি সত্যিই এটি বুঝতে না পারেন তবে কাটা ও পেস্ট কোডের মধ্যে সম্ভবত এমন সমস্যা রয়েছে যা সমাধানের জন্য দুঃস্বপ্ন হতে পারে।

আমাকে ভুল করবেন না, আমি অন্য লোকের কোড সন্ধান করা এবং এর থেকে শেখা জরুরি, তবে আমরা কেবল এটি আমাদের অ্যাপ্লিকেশনটিতে পেস্ট করি না। আমরা পুনর্লিখন ধারণা আমাদের অ্যাপ্লিকেশন মধ্যে।

তবে আমি ক্রমাগত এমন লোকদের সম্পর্কে শুনছি যারা কেটে কেটে পেস্ট করে এবং তারা এগুলি সম্পর্কে সাধারণ অভ্যাসের মতো কথা বলে। আমি অন্যদের মন্তব্যও দেখতে পাই যা এটি সাধারণ অনুশীলনকে নির্দেশ করে।

সুতরাং, বেশিরভাগ প্রোগ্রামাররা কোডটি কেটে পেস্ট করে?


10
এমনকি যদি আমি কিছু করতে জানি তবে আমি প্রায়শই সর্বোত্তম অনুশীলনের জন্য কোড নমুনাগুলি অনুসন্ধান করব। আপনি একবার কোডটি পড়তে পারবেন, আপনি কী বলেছিলেন তা আপনার পরিকল্পনার চেয়ে ভাল কিনা তা আপনি তাড়াতাড়ি বলতে পারেন।
নিকোল

কাটা ও পেস্ট করার বিষয়ে সম্প্রতি একটি প্রশ্ন ছিল। কেন আপনি এটি পরীক্ষা করে দেখুন না ?
নুরগুল

আমি যদি এটা বুঝতে পারি।
জননি

উত্তর:


46

দুটি সাধারণ মামলা:

একটি প্রকল্প থেকে অন্য প্রকল্পে:

বেশিরভাগ প্রোগ্রামার এই ক্ষমতাটিতে কোড কাটা এবং পেস্ট করে। তারা কোনও পূর্ববর্তী প্রকল্প বা অনলাইনে কিছু খুঁজে পেতে পারে এবং এটি অনুলিপি করে / অনুলিপি করে বা কপি / পেস্ট করে এবং এতে পরিবর্তন করে make আমি মনে করি এই অনুশীলনটি সাধারণত ভাল থাকে। কোডটি প্রমাণিত হওয়ার পরে এটি বিশেষত ভাল। (উদাহরণস্বরূপ: অতীতের প্রকল্পের কিছু প্রকারের ইউটিলিটি অবজেক্ট যা ভালভাবে কাজ করেছে, বা সম্ভবত কয়েকটি ব্লগ থেকে প্রয়োজনীয় পরিবর্তন রয়েছে)। যেখানে এটি খারাপ হতে পারে, যখন আপনি কোডটি অনুলিপি করছেন যা আপনি বুঝতে পারছেন না, বা যেখানে কোডটি দুর্বল, বা যেখানে আপনি কোডটি সংযুক্ত করছেন তার চেয়ে আরও ভাল বিকল্প সমাধান রয়েছে।

একই প্রকল্পের অভ্যন্তরে: একই প্রকল্পে অনুলিপি করা এবং আটকানো ভাল ধারণা নয়। এটি একটি দুর্গন্ধযুক্ত যে কোডটি অনুলিপি করা হচ্ছে তা কেবল কোনও পদ্ধতি / শ্রেণিতে হওয়া উচিত এবং বার বার বলা উচিত। এর কিছু ব্যতিক্রম রয়েছে, তবে সাধারণত প্রোগ্রামারকে ভাবতে হবে: " আমি এই কোডটি অনুলিপি করছি এমন কোনও উপায় আছে কি? "


5
সাধারণত এটি সত্য, যদি না আপনি কোড লিখে থাকেন যার জন্য অ্যান্টি-প্যাটার্নগুলির প্রয়োজন হয়, যেমনটি সফ্টওয়্যার লাইসেন্সিংয়ের মতো অ্যান্টিপ্যাম্পারিং কোডের ক্ষেত্রে হতে পারে।
রব পারকিনস

হ্যাঁ, আমি এই দুটি জিনিসই করেছি। আমি দীর্ঘ সময়ের হেকের জন্য একই প্রকল্পের মধ্যে থেকে কাটা ও পেস্ট করা কোডটি করিনি (যদিও আমি এটিতে ফিরে আসার জন্য লগড বাগের সাথে চরম চাপের মধ্যে এটি খুব কমই স্বীকার করব)। ইউটিলিটি ক্লাস হিসাবে, আমার অনুলিপি প্রকল্পের প্রকল্পটি এখন সম্পূর্ণ ফাইলগুলি অনুলিপি করার জন্য বিচ্ছিন্ন।
জন ম্যাকআইন্টির

2
ডাটাবেস কোড লেখার সময়, আমি সাধারণত এটির কোনওটি নতুন ফাংশনে কাটা এবং আটকানো হয় এবং পছন্দসই ফলাফল পাওয়ার জন্য এসকিএল নিজেই সংশোধন করি এবং ডাটাবেস কল করার জন্য কিছু পূর্বশর্ত পুনরায় টাইপ করে নিজেকে উদ্বিগ্ন করার প্রয়োজন হয় না। যদিও সাধারণভাবে আমি উভয় মন্তব্যেই একমত।
ক্রিস

1
@ ক্রিস: এটির হৃদয়টি অনুলিপি করুন এবং সংশোধন করুন এটি কেবল যেমন আটকানো হয়েছে তার চেয়ে আলাদা।
লোরেন পেচটেল

1
@ লরেন পেচটেল: তবুও এটি কোডটি অনুলিপি করা এবং আটকানোর কাজ জড়িত।
ক্রিস

37

বেশিরভাগ প্রোগ্রামার এটি করে, তবে এর অর্থ আপনার উচিত নয়

আমার প্রোগ্রামিং মন্ত্রগুলির মধ্যে একটি হ'ল: "আমি যদি কোডটি অনুলিপি করে এবং পেস্ট করছি তবে আমি কিছু ভুল করছি" মূলত, DRY

আমি মনে করি এটি স্পষ্ট হওয়া উচিত যে কোড পুনরায় ব্যবহারের অর্থ কোডটি পুনরাবৃত্তি না করে একটি উত্স হিসাবে কোড ব্যবহার করা। কখনও কখনও আমি আমার নিজের কোডটি অনুলিপি করে আটকে দিয়েছি, বেশিরভাগ ক্ষেত্রেই আমি বয়লার প্লেট কোড বা স্টাফ দিয়ে শেষ করি যা দেখতে সত্যিই সাদৃশ্যপূর্ণ।

সেই কোডটি দিয়ে আরও কিছু সময় বিনিয়োগ করার পরে আমি নিম্নলিখিতটি দিয়ে শেষ করি:

  • একটি উপাদান (এছাড়াও দেখুন: উদ্বেগ পৃথক )
  • আমি ভবিষ্যতে জিনিসগুলিকে আরও সহজ, ক্লিনার এবং পুনর্বারের জন্য আরও সহজ করে তুলতে প্রতিবিম্বের অবলম্বন করতে পারি ।
  • একটি ভাল নকশা , কারণ এটি কার্যকর হলেও, আপনি পাঠগুলি শিখার পরে কেন আবার এটি করবেন না ?.
  • এমন একটি প্যাটার্ন যা আমি বিমূর্ত করতে পারি, লাইব্রেরির উপাদানগুলিতে পরিণত করতে পারি এবং সদৃশ কোডটি সরিয়ে দিতে পারি।

ক্লায়েন্ট / বসের যত্ন নেই (কমপক্ষে প্রত্যক্ষ এবং স্বল্পমেয়াদে) এবং আপনার একই ফলাফলের সাথে শেষ হতে পারে, তাই আমাদের কোডটি অনুলিপি করা উচিত এবং করা উচিত নয় তা বিতর্কযোগ্য হতে পারে তবে সমস্যাটি আসলেই আসে যখন এটি আসে বাগ, মডুলারালিটি হ্রাস এবং শেষ পর্যন্ত রক্ষণাবেক্ষণ নরকের দিকে নিয়ে যায়।

আপনার কি করা উচিত: রিফ্যাক্টর ASAP

কেউ সঠিক কোড লিখেন না, এমনকি এটি কাজ করে, এমনকি আপনি অনুলিপি এবং পেস্ট করছেন না এবং এটি আপনার নিজের কোড, আপনি যদি এতে সন্তুষ্ট না হন তবে কেবল মন্তব্যে একটি নোট রাখুন (যেমন একটি ডকব্লোক "@ টোডো") মনে করিয়ে দেওয়ার জন্য নিজে কী কী চুল্লি করবেন এবং কেন ... আপনি নিজে এটি রিফ্যাক্টর না করলেও এটি রক্ষণাবেক্ষণকারীদের জন্য সুখ এবং সম্পূর্ণ হতাশার মধ্যে পার্থক্য হয়ে উঠতে পারে।

অবশেষে, আপনি শেষ পর্যন্ত ভাল কোড দিয়ে শেষ করবেন, এমনকি আপনি অনুলিপি এবং পেস্ট করে দিলেও।

গুড কোড

মাধ্যমে xkcd


15
আমি প্রায়শই দেখেছি "রিফ্যাক্টর" পরে "রিফ্যাক্টর কখনই" রূপান্তরিত হবে না, বা আরও খারাপ "আমি এমন উত্তপ্ত শট অন্য কিছু SUCKER আমার প্রায়-তবে-না-বেশ-ঠিক কোডটি রিফ্যাক্টর এবং ঠিক করতে পারে" " আমি একে একে ঠিক সামনে কাজ করতে বিশ্বাসী, অন্যথায় এটি কালকের মতো - এটি কখনও আসে না।
দ্রুত_ এখন

1
@ চটজলদি_ পুনরায়: "আমি এইরকম হট শট করছি অন্য কিছু SUCKER আমার প্রায়-তবে-বেশ-ঠিক কোডটি রিফ্যাক্টর করতে এবং ঠিক করতে পারে" ... আমি এই প্রকাশকে কীভাবে ঘৃণা করি তা আমি আপনাকে প্রকাশ করতে পারি না।
জন ম্যাকআইন্টির

আরে জন আমি আপনাকে শুনতে পাচ্ছি. আমি আমার জীবনের বেশ কয়েক বছর অতিবাহিত করেছিলাম ... অর্ধেকটা বেশি খরচ হয়েছিল এবং মধ্যরাত পর্যন্ত ঘাম ঝরছে যা ঘটছে (এবং ক্রেপ কোডের দুর্দান্ত স্ল্যাবগুলি পুনরায় লিখতে হবে) - এবং হট শটটি স্ক্রুতে গিয়েছিল অন্যকিছু. দীর্ঘশ্বাস.
দ্রুত_ এখন

1
দলে আরও লোকেদের আরো "refactor পরে" পরিণত হন "refactor কখনো" যতদূর আমি দেখতে পারে: /
wildpeaks

8

আমি যখন আটকে থাকি এবং আমার সমস্যা সমাধানের জন্য স্টাফ সন্ধান করি এবং কোডের কিছু সহায়ক স্নিপেট যা ঘটে যা চায় তা ঘটায় আমি স্বাভাবিকভাবেই এটি অনুলিপি করি। কখনও কখনও এটি এর সংক্ষেপে। আমি তখন এটি আমার প্রয়োজন অনুসারে পরিবর্তন করি। এটি প্রায়শই ঘটে যখন আমি এমন কোনও বিষয় আবিষ্কার করি যেগুলিতে আমি বিশেষজ্ঞ নই (বর্তমানে, উদ্দেশ্য-সি)।

আমি কোড থেকে সর্বদা কিছু শিখতে সময় নিই, তাই আমার পক্ষে এটি চাকাটি পুনরায় উদ্ভাবন এড়াতে শেখার একটি দুর্দান্ত উপায়।


4
আমি সবসময় বলেছি 'একজন ভাল বিকাশকারী একটি অলস বিকাশকারী'। অন্য কেউ যদি ইতিমধ্যে এটি করে ফেলেছে তবে আমি চক্রটিকে পুনরায় উদ্ভাবন করব না। তবে আমি এটি ছোট রাখি ... আমি কোডের কয়েক লাইনের বেশি কখনও অনুলিপি করি না এবং এমন কিছুও না যা আমি পুরোপুরি বুঝতে পারি না।
morganpdx

আমি অন্যের কাছ থেকে শেখার জন্য আছি, তবে আপনি কি খুঁজে পান না যে আপনি যদি কোনও নির্দিষ্ট সমস্যাটির সন্ধান না করেন, তবে কেবল অন্য ব্যক্তি যা করেছেন তা আপনার মাথা গুটিয়ে রাখা কেবল সময় থেকে এটি করা আরও বেশি সময় ব্যয় করে? (লক্ষ্য করুন যে আমি 'কোড' সম্পর্কে কথা বলছি, ক্লাস ইত্যাদির মতো কার্যকারিতার সম্পূর্ণ একক নয় ...)
জন ম্যাকআইন্টির

@ জন ম্যাকআইন্টির হতে পারে, তবে সাধারণত যখন আমি কিছু ছোট কোড স্নিপেটে পপ করি তবে আমি এতে সন্তুষ্ট না হওয়া অবধি এটি ছাঁচ করি। প্রায়শই এটিকে যে কোনও উপায়ে (কোনও ফাংশনে, আরও জেনেরিক, উন্নত, অনুকূলিতকরণ করা) প্রয়োজন হয়।
মার্টিন উইকম্যান

@ জন: কোডের স্নিপেটগুলি সেই টুকরো সরবরাহ করে যা আপনাকে কীভাবে কীভাবে করতে হয় তা দেখায়। অবশ্যই, কাটা এবং পেস্ট করুন। তবে মার্টিন যেমন উল্লেখ করেছেন - সেই কোডটি কী করছে তা শিখুন। আপনি নামটি জানেন না এমন একটি নির্দিষ্ট পদ্ধতির সন্ধানে আপনি আরও অনেক বেশি সময় ব্যয় করবেন। যখন আপনি জানেন না কোনও শব্দের অর্থ কী; আপনি অভিধানে এটি তাকান। সংজ্ঞাগুলি 100% স্পষ্ট; তবে আপনি কতবার ব্যবহারের নমুনাগুলি দেখেন? কোড উদাহরণগুলি অভিধান ব্যবহারের নমুনার মতো। এমএসডিএন সর্বদা ব্যবহারের নমুনাগুলি অন্তর্ভুক্ত করে না বা প্রায়শই অসম্পূর্ণ থাকে।
IAbstract

6

আমি এখানে অন্য লোকের কোড অনুলিপি / আটকানো সম্পর্কে কথা বলতে যাচ্ছি। আমার নিজের ব্যক্তিগত গ্রন্থাগার থেকে নিজের কাজের কিছু অংশ দখল করা সুষ্ঠু খেলা। আমি তাদের জানি এবং সংজ্ঞা দিয়ে তাদের বুঝতে।

আমি দেখতে পেয়েছি যে আমার যখন একটি নির্দিষ্ট সমস্যা হয় এবং আমি এটি সমাধান করে এমন একটি ব্লগ পোস্টে চলে আসি তবে আমি "কাট এবং পেস্ট" কোডটি সবচেয়ে ঘন ঘন পরিস্থিতি। বেশিরভাগ সময় আমি আমার প্রকল্পটিতে সমাধানটি পুনরায় টাইপ করি (সর্বোপরি, সম্ভবত এটি ব্লগ লেখকের স্টাইলে লেখা আছে, অন্য কিছু না হলে)। এটি আসলে আমার কোড নয়, তবে সে দৃশ্যে এটি ব্যবহার করতে আমার খারাপ লাগবে না।

বাইরে গিয়ে পুরো পদ্ধতি বা সিস্টেমগুলিকে আমার প্রজেক্টে যেমন আটকানো যায় তেমন হ'ল এবং এটিকে কল করে বলার মতো জিনিস যা আমি বুঝতে পারি না। অন্য দিন স্ট্যাকওভারফ্লোতে একটি প্রশ্ন ছিল যা এরকম কিছু করার সাথে সমস্যার পুরোপুরি চিত্রিত করেছিল।

বিভিন্ন কোড অংশগুলির বাইরে একটি ফ্রাঙ্কেনস্টাইন দানবকে একসাথে বাঁধানো কেবল এতটা দক্ষ হতে পারে না। আমি বলতে চাইছি, আপনি যদি এটির পক্ষে ভাল হন তবে এর অর্থ আপনি একই সমাধান বারবার পুনরায় প্রতিলিপি করছেন বা আপনি অন্য ব্যক্তির কোড সম্পর্কে পর্যাপ্ত উপলব্ধি অর্জন করেছেন যে একই স্তরের অনুলিপি / আটকানো আর প্রয়োজন হবে না এবং আপনার বেমানান কোড নমুনার মধ্যে সমস্যাগুলি সমাধান না করার মাধ্যমে উত্পাদনশীলতা উন্নত হবে।

আমি ব্যক্তিগতভাবে অনেক প্রোগ্রামারদের সাথে দেখা করি নি যারা বড় আকারে অনুলিপি / পেস্ট করে। আমি প্রচুর দেখতে পেয়েছি যারা নিজেকে গভীরতম এবং অন্ধকার কোণে কোড করে, তবে এটি একটি ভিন্ন গল্প। আমার ব্যক্তিগত উপাখ্যানের ভিত্তিতে, আমি বলব যে বেশিরভাগ প্রোগ্রামাররা পুরো অ্যাপ্লিকেশনগুলি এক সাথে অনুলিপি / পেস্ট করে না, তবে এটি নিশ্চিতভাবে বলা শক্ত।


1
হতে পারে অনেক প্রোগ্রামার প্রকৃত কোডটি বড় আকারে অনুলিপি / অনুলিপি করে না, তবে তারা খুব
সহজেই

1
@ স্টুয়ার্ট ট্রু, তবে আমি মনে করি যে পার্থক্যটি এই যে গ্রন্থাগারটিকে প্রোগ্রামারের নিজস্ব কাজ হিসাবে দাবি করা হবে না। এবং সত্যই, যতক্ষণ লাইব্রেরিটি কাজ করে এবং আমার যা করা দরকার তা করে চলে, আমি বিশেষত এটির উত্সটি ছিদ্র করার কোনও যত্ন করি না। (অনুধাবন করা অনুমান করা অন্যথায় গ্রন্থাগারটি প্রথম স্থানে কতটা সম্মানজনক / নির্ভরযোগ্য হয় তার উপর করা হয়।)
অ্যাডাম লিয়ার

একটি উপায়ে এটি অভিপ্রায় হিসাবে প্রকাশক এবং গ্রাহক উভয়
পক্ষই

@ স্টুয়ার্ট - আমি এই আলোচনায় একটি লাইব্রেরি অন্তর্ভুক্ত করব না কারণ এটি একটি সম্মিলিত ইউনিট ... সত্যই 'হারাতে হবে না' কোড, যদি আপনি জানেন তবে আমার অর্থ কী।
জন ম্যাকআইন্টির

প্রকৃতপক্ষে আপনার মন্তব্যগুলি সম্পর্কে চিন্তাভাবনা করে, আমি সত্যই আশ্চর্য হতে হবে যে কোনও প্রোগ্রামারের পক্ষে সম্পূর্ণ সিস্টেমকে একসাথে কাটা এবং পেস্ট করা সম্ভব কিনা। আমি মনে করি যে তাদের হুবরিসের ওজন দ্রুত তুষারপাত করবে এবং তাদের অগ্রগতি স্থবির করে দেবে।
জন ম্যাকআইন্টির

4

খারাপ: বার বার একই ব্লকের কোডটি অনুলিপি করা এবং আটকানো

আপনি যদি নিজেকে এটি করছেন বলে মনে করেন, সম্ভবত কোডটি অনুলিপি করা হচ্ছে কী থেকে কী বিমূর্ত করা যেতে পারে সে সম্পর্কে চিন্তা করার জন্য এবং এটি পরিচালনা করার জন্য একটি ফাংশন / পদ্ধতি তৈরি করা উচিত। এখানেই ডিআরওয়াই (নিজেকে পুনরাবৃত্তি করবেন না) নীতি গণনা করে।

ভাল: কাজ করার জন্য পরিচিত কোডের একটি ব্লক অনুলিপি করা

DRY (নিজেকে পুনরাবৃত্তি করবেন না) এখানেও প্রয়োগ হয়, কেবল অন্যরকম অর্থে। IE, আপনি ইতিমধ্যে অতীতে কাজ করেছেন এমন পুনরাবৃত্তি করবেন না। আপনি যদি কোডটির কোনও বিভাগ লেখার জন্য সময় নিয়ে থাকেন, এটি ডিবাগ করুন, এটি পরীক্ষা করুন এবং এটি একটি প্রোডাকশন কোডবেজে কাজ করার প্রমাণিত; আপনি এটি আবার ব্যবহার না করতে বোবা হবেন।

বেশিরভাগ লোক অনুলিপি-পেস্টকে একটি খারাপ র‌্যাপ দেয় কারণ অনেক শিক্ষানবিশ প্রোগ্রামাররা তাদের জালটি কাটাতে এবং অন্যের কোডের একটি মিশ্ম্যাশ অনুলিপি / পেস্ট করে ব্যয় করে যা এটি আসলে কী করে তা না করে।

প্রতিবার স্ক্র্যাচ থেকে সমস্ত কিছু লেখার চেয়ে ভাল নয়। আমি জানি অনেক পুরানো স্কুল পিউরিস্ট প্রোগ্রামার রয়েছে যে জিনিসটি স্ক্র্যাচ থেকে লেখা উচিত এবং আমি আশা করি যে আমি তাদের সাথে কাজ করতে আটকাব না। আপনার যদি 5 বছরের প্রোগ্রামিং অভিজ্ঞতা থাকে তবে আপনার কোডের একটি চমত্কার যথেষ্ট লাইব্রেরি থাকা উচিত যা পুনরায় ব্যবহারের জন্য প্রধান। এটি অভিজ্ঞ প্রোগ্রামার টেবিলে আনতে পারে এমন সেরা সম্পদের মধ্যে একটি কারণ এটি সম্ভাব্য উন্নয়নের সময় সাশ্রয় করবে।

আপনি যদি নিজের পুরানো কোডটি প্রথমে করেন না তা বুঝতে না পারলে, মন্তব্যগুলি পড়তে এবং নিজেকে আবার পরিচিত করতে কিছুক্ষণ সময় নিন। যদি আপনার মন্তব্যগুলি স্তন্যপান করে ... ভাল, এটি সম্পূর্ণরূপে অন্য একটি সমস্যা।


কোডটি অনুলিপি করা ও আটকানোর পরিবর্তে এটি পুনরায় ব্যবহারযোগ্য উপায়ে লিখতে সম্পূর্ণ সম্ভব। তারপরে এটি অনুলিপি এবং পেস্ট করার পরিবর্তে এটি ব্যবহার করুন।
বুজর্ন

1
@ জর্জন টিপলিং হ্যাঁ, যদি প্রক্রিয়াটি জটিলতা না যুক্ত করে কোডটি কখনও পুনরায় ব্যবহার না করা হয় তবে কোডটি পুনঃব্যবহারযোগ্য ফাংশনগুলিতে ভাঙ্গা পছন্দ করা ভাল
ইভান প্লেইস

আপনি যদি এটি অনুলিপি করে আটকে দিচ্ছেন তবে আপনি এটি পুনরায় ব্যবহার করছেন। আমি সম্মত হই যে লোকেরা তাদের মাথা ব্যবহার করুক এবং শর্তগুলি এটির নিশ্চয়তা দেয়। পরীক্ষাগুলি লেখার সময় আমি নিজেকে অনুলিপি করা এবং আটকানো দেখতে পেয়েছি, কিন্তু সেখানেও আমি পুনরায় ব্যবহারযোগ্য ফাংশন তৈরি করার চেষ্টা করেছি, তবে তারপরে দুটি বা তিনটি লাইনের মতো রয়েছে যা প্রায় একই, তবে আমি একে একে যথেষ্ট রূপান্তরিত করতে পারি না পুনরায় ব্যবহারযোগ্য ফাংশন।
জর্জন

3

লেখার কোডের 25 বছর পরে, এমন অনেক সময় এসেছে যখন (কোনও পূর্ববর্তী নিয়োগকর্তার পক্ষে কোডটি কোডের অ্যাক্সেস না দিয়ে আমি লিখেছিলাম) কাটতে এবং পেস্ট করতে পারতাম। তবে এটি খুব বিরল হয়েছে (এবং পড়তে থাকুন)।

সম্ভবত এর সর্বোত্তম উদাহরণ হ'ল ইউনিক্স অপারেটিং সিস্টেমের জন্য আমি বহু বছর আগে এসেছি এমন একটি খুব সাধারণ কমান্ড লাইন পার্সার। আরোগুলির মাধ্যমে একটি সহজ লুপ জিপ করা এবং বিকল্পগুলি প্রক্রিয়া করা। এটি দেবদৃষ্টিতে সহজ এবং মার্জিত ছিল এবং আমি এটিকে (আক্ষরিক কাটা এবং পেস্ট হিসাবে তুলনায় আরও বেশি) ব্যবহার করেছি। এটি নিয়মের চেয়ে ব্যতিক্রম।

সাধারণত একটি সরল ওলে কাটা এবং পেস্ট সম্পূর্ণরূপে অনুপযুক্ত - এর আরও কাটা এবং ধারণাটি বা আলগোরিদমটি পেস্ট করুন, এটি গুরুত্বপূর্ণ।

আমি খুব গর্বিত নই - আমি আনন্দের সাথে সত্যই দ্রুত প্যারিটি বা হ্যামিং কোড যাচাইয়ের জন্য অ্যালগরিদম বা এর মতো বিদেশী কিছু খুঁজে বের করব। তারপরে এটি কয়েক ঘন্টা ব্যয় করে দেখুন এটি সত্যিই আমার পরে যে বিশাল-অতি দ্রুতগতির জিনিস, বা জঞ্জালের একটি নির্বোধ গাদা।

আমি উদ্বিগ্ন প্রতিবারই কেউ এটিকে বোঝার জন্য বিরতি ছাড়াই কেবল অনুলিপি করে। তারা হয় বুদ্ধিমান (এটি এক নজরে এটি এবং এর সমস্ত সূক্ষ্মতা বুঝতে) বা বোকা। এর মধ্যে কোনও কিছুর জন্য খুব বেশি জায়গা নেই। ওহ, এবং সত্যিকারের প্রতিভাও নেই are

না বুঝে, আপনি যা করতে পেরেছেন তা আসলেই আপনার কোনও ধারণা নেই, কেবল সুখী নয় বরং অসুখী পরিস্থিতি বা ইনপুট শর্তেরও অধীনে। কখনও কখনও এটি আপনার ভাগ্যবান হওয়ার কারণ নয়। এবং কখনও কখনও এটি দীর্ঘমেয়াদী ব্যথা করে তোলে।


4
অন্যদিকে, এমন প্রোগ্রামার রয়েছে যারা কোডটি নিজেরাই লেখেন এবং এখনও এটি বোঝেন না ...
এইচপিএলবিএস

3

একটি সাধারণ পরিস্থিতি রয়েছে যেখানে আপনি প্রাথমিকভাবে এটি উত্পাদনশীল হওয়ার জন্য প্রয়োজন।

আপনার অজানা কোনও প্রযুক্তি শেখা শক্ত না যদি না আপনার সাথে কাজ করার উদাহরণ রয়েছে। সুতরাং আপনি এটি অনুলিপি করে আটকান যা আসলে চলতে থাকে এমন কিছু আছে এবং তারপরে এটি টিঙ্কিং শুরু করে।


সংশোধন: এমন একটি আসল বেলিফ রয়েছে যেখানে আপনি মূলত মনে করেন এটি উত্পাদনশীল হওয়ার জন্য আপনাকে প্রয়োজন। অতএব আপনি কোনওরকমভাবে কাজ করে এমন কিছু প্রকাশের জন্য আপনার অনুলিপিটি আটকে দিন এবং ক্ষতিটি পুনরুদ্ধার করার জন্য আপনার চিরকালীন জীবনযাপন ব্যয় করুন।
নিউটোপিয়ান

3

একজন নতুন প্রোগ্রামার হিসাবে (আমার প্রথম কাজের 4 মাস), আমি অনেক সাহায্যের উপর নির্ভর করি (এসও বা অন্য কোনও স্থান থেকে)। আমি অন্ধভাবে অনুলিপি করে অন্যের কোডটি অনুলিপি এবং আটকানোর একটি বিষয় করি। প্রদত্ত কোডটি আমি যা ব্যবহার করব তা হ'ল, আমি এটি আমার প্রোগ্রামে টাইপ করব এবং তারপরে এটি কী করে এবং এর কারণগুলি আমি পুরোপুরি বুঝতে পারি তা নিশ্চিত করে কিছুটা সময় ব্যয় করব।

আমি নিশ্চিত করতে চাই যে আমি ক্রমাগত শিখছি এবং কেবল কাটা এবং পেস্টের বিশেষজ্ঞ নই


1

এই বিষয়টি সম্পর্কে আমার অনেক অনুভূতি রয়েছে এবং আমি সত্যই বলতে পারি না যে এগুলির কোনও সম্পূর্ণ উদ্দেশ্যমূলক।

আপনার আবেদনে অন্য ব্যক্তির কোড কাটা এবং আটকানোর জন্য অনেক যুক্তি রয়েছে। তাদের মধ্যে কিছু বোঝাতে পারে, কিছু নাও পারে। উদাহরণস্বরূপ, যদি আপনি কারও ব্লগ থেকে এমন একটি পদ্ধতি পেয়ে থাকেন যা কোনও ইনপুট নেয় এবং কোনও গাণিতিক অ্যালগোরিদম চালায় যা আপনার গাণিতিক দক্ষতার বাইরে থাকে এবং ফল ছড়িয়ে দেয় - এটি কাটা এবং আটকানোর পক্ষে যুক্তিযুক্ত - তাদের ব্যবহারের জন্য লেখকের অনুমতি নিন কোড এবং তাদের যথাযথ যেখানে dueণ - এটি করা সম্মানজনক জিনিস।

চাকাটি পুনরায় উদ্ভাবন না করার পক্ষে যুক্তি রয়েছে - আবারও এটি তাত্ত্বিকভাবে অর্থবোধ করে। আপনি যে কোডটি কাটাচ্ছেন এবং পেস্ট করছেন তার সাথে যদি আপনি ঘনিষ্ঠভাবে পরিচিত হতে সময় না নেন, তবে সমস্যাটি সমাধানের আরও ভাল উপায় আছে কিনা তা আপনি জানেন না, কোডটিতে কি কোনও বাগ রয়েছে কিনা তা আপনি জানেন না । আপনি যে চাকাটি আটকে দিচ্ছেন তা যদি ভেঙে যায়?

গতি এবং দক্ষতার জন্য যুক্তি রয়েছে - আপনি অন্য ব্যক্তির কোডের একটি লাইব্রেরি তৈরি করেন যা আপনি ছিঁড়ে ফেলেছেন, চুরি করেছেন, চুরি করেছেন বা অন্যথায়, এটি ভাবতে ভাবতে পারেন, কিছু অ্যাপ্লিকেশন ফ্র্যাঙ্কেনস্টেইনিংয়ের বাইরে কীভাবে প্রোগ্রাম করবেন তা আপনার কখনও জানতেও হবে না may একসাথে পুনরুদ্ধার অংশগুলি।

এমন সময় এবং স্থান রয়েছে যেখানে আমি এই আচরণটি সম্পূর্ণ গ্রহণযোগ্য বলে মনে করি। একসাথে হ্যাক করার জন্য দ্রুত নিক্ষেপকারী সরঞ্জামগুলি যা দীর্ঘায়ু জন্য ডিজাইন করা হয়নি তবে কোনও কাজ সম্পন্ন করার জন্য, এখনই হুক বা কুটিল দ্বারা। নমুনা প্রোটোটাইপিং এবং অধ্যয়ন করার উদ্দেশ্যে, তাত্ত্বিক প্রসঙ্গে শিখতে এবং অগ্রসর করার জন্য আমি মনে করি এটি সম্পূর্ণ ন্যায্য খেলা।

অন্য ব্যক্তির কোড কাটা এবং পেস্ট করা চুরির ঘটনা - যদি আপনার তাদের আশীর্বাদ থাকে এবং আপনি যে কোডটি আটকে রেখেছেন তা যদি আপনি বুঝতে পারেন এবং এটি আপনার অ্যাপ্লিকেশনের কোডিং মানগুলির সাথে মানিয়ে যায় তবে জরিমানা, আমি এটি ন্যায্য খেলাটি স্বীকার করব।

একজন পেশাদার সফটওয়্যার ইঞ্জিনিয়ার হিসাবে, আমাকে একটি মান এবং নীতিশাস্ত্র বজায় রাখার জন্য বেতন দেওয়া হচ্ছে। আমার ক্লায়েন্টকে বিচারের ঝুঁকিতে ফেলে অন্য ব্যক্তির কপিরাইটে চুরি, চুরি করা বা লঙ্ঘন করার জন্য আমাকে অর্থ প্রদান করা হচ্ছে না। এগুলি ছাড়াও, একটি আসল ঝুঁকি রয়েছে যে আপনি যখন বলেছিলেন কাটা / পেস্ট কোডটি চালানো হয় তখন এর বিপর্যয়কর পার্শ্ব প্রতিক্রিয়া হয়।

জন আপনাকে এই উত্তরটিকে লক্ষ্য করে না, আমি জানি আপনি যখন এই জাতীয় বিষয়ের দিকে আসে তখন আপনি নৈতিকভাবেই ঝোঁক হন, সুতরাং এটি কেবল প্রশ্নের দিক দিয়েই কেবল একটি সাধারণ অভিজাত।

সংযোজন : এটি বলেছিল, আমি অনুভব করেছি যে প্রকল্পগুলির মধ্যে আপনার নিজস্ব কোড কাটা এবং আটকানো যথেষ্ট গ্রহণযোগ্য - যদি না এটি অন্য কারও জন্য ভাড়া নেওয়ার কাজ হিসাবে লেখা না থাকে তবে সেক্ষেত্রে আপনার কপিরাইটের মালিকানা নেই এবং আপনার অনুমতি নেওয়া উচিত আপনি যার জন্য কোড করেছেন তা সম্পর্কে of আমি খুঁজে পেয়েছি যে কোডটি মালিকানাধর্মী ফাংশনাল ধারণাগুলির জন্য প্রাসঙ্গিক না হলে বেশিরভাগ নিয়োগকর্তা অন্য ক্লায়েন্টদের জন্য আপনার নিজের ধারণাগুলি পুনরায় ব্যবহার করে আপনার সাথে ঠিক আছেন।


ব্লগ পোস্টগুলির কোড ব্যবহার করা যা আপনার নির্দিষ্ট সমস্যার সমাধান করে? আপনি কী নৈতিকতা লঙ্ঘন বিবেচনা করবেন বা শারীরিকভাবে কোডটি আটকানো কি আপনার প্রকল্পে সমাধানটি আবার টাইপ করবেন একই বিভাগে আসবে? "ধার করা" কোডের আকার (যেমন একটি সম্পূর্ণ প্রোগ্রাম / ফাংশন বনাম একটি ছোট স্নিপেট) কী আপনার মতামতকে প্রভাবিত করে?
অ্যাডাম শিখুন

2
আমি অনুভব করি যে এটি যদি কোনও ব্লগ পোস্টে থাকে তবে লেখক এটিকে জনসাধারণ হিসাবে প্রকাশের উদ্দেশ্যে করেছিলেন, তাই যদি এটি আপনার পক্ষে কার্যকর হয় তবে এটি ন্যায্য খেলা। যাইহোক, আমি খুব কমই কোড স্নিপেটগুলি পেয়েছি যা ভার্বাটিমে অনুলিপি করা যায়। তাদের সাধারণত কিছুটা ফিনগলিংয়ের প্রয়োজন হয়।
পেমেদাস

টিউটোরিয়াল বা ব্লগ পোস্টগুলি ব্যবহার করা হচ্ছে এমন কোড থেকে আমার কোনও সমস্যা নেই - এটি কী করে তা কেবল বুঝতে পারেন। সম্ভবত এটি পোস্ট করা থাকলে এটি উপলব্ধ।
দ্রুত_ এখন

"জন আপনাকে এই উত্তরটিকে লক্ষ্য করে না ..." আমি আসলে ভাবিনি যে আপনিই ছিলেন ... কমপক্ষে আমি যতক্ষণ না পড়ি ততক্ষণ ভাল না। এলএল
জন ম্যাকআইন্টির

আমি চৌর্যবৃত্তির উপর আপনার মন্তব্য পছন্দ করি এবং কোডটি পুরোপুরি বুঝতে পেরেছি, তবে আপনি কি নিজেকে সত্যই লেখার চেয়ে অন্যের কোডের অনুলিপি / পেস্ট করা আরও কার্যকর বলে মনে করেন? আমি দেখতে পেয়েছি যে আপনি এটি পুরোপুরি বুঝতে পারবেন না এবং পরে সমস্যাগুলি হবে না, অথবা এটি সম্পূর্ণরূপে বুঝতে আপনার প্রচেষ্টা কেবল নিজের লেখার চেয়ে বেশি সময় নিবে। KWIM?
জন ম্যাকআইন্টির


0

কোডটি যদি ভাল থাকে তবে অনুলিপি এবং পেস্টের পরিবর্তে এটি একটি সাধারণ লাইব্রেরিতে তৈরি করা উচিত। তবে লোকেদের রিফ্যাক্টরিং নিয়ে বিরক্ত করা যায় না এবং তারা অনুলিপি এবং পদ্ধতি দ্বারা একই কার্যকারিতা ছড়িয়ে দেওয়া পছন্দ করে।

অনুলিপি এবং পেস্টের সর্বজনীন পরম আইনটি পরিবর্তে ভাল বা খারাপ, এটি কখন ব্যবহার করা উচিত তা দেখতে হবে।

অনুলিপি এবং পেস্ট করার সুবিধাগুলি হ'ল: আপনি দ্রুত যাচ্ছেন কনসটি হলেন: একই কোড একাধিক জায়গায় ছড়িয়ে পড়েছে এবং যে কোনও সমস্যা পাওয়া গেছে / সমাধান হয়েছে তা সর্বত্রই সমাধান করা দরকার, যদি অনুলিপিটি কপিরাইটের পরিবর্তে সাধারণ লাইব্রেরি হিসাবে ব্যবহার করা হয় তবে আপডেটটি হবে সর্বত্র প্রচার করুন। একই কোডটি সর্বত্র বহুবার ছড়িয়ে দেওয়ার পরিবর্তে একটি লাইব্রেরি ব্যবহারের একটি ছোট প্রাথমিক বিনিয়োগের জন্য।

পছন্দটি হ'ল প্রাথমিকভাবে অনেকটা সময়ের তুলনায় প্রথমে কিছুটা সময় সাশ্রয় করা উচিত, তারপরে অনুলিপি করা এবং পেস্ট করার উপায়, অন্যথায় রিফ্যাক্টর করে এটিকে একটি সাধারণ লাইব্রেরিতে রাখুন।


আমি অবশ্যই সাধারণ গ্রন্থাগার সম্পর্কে একমত, তবে আপনার কি সেই কোডটি কেটে পেস্ট করা উচিত, বা এটিকে স্ক্র্যাচ থেকে তৈরি করা উচিত?
জন ম্যাকআইন্টির

কোডটি আমদানির দ্রুততম উপায় হ'ল অনুলিপি এবং পেস্ট করা তবে একটি পর্যালোচনা করা উচিত এবং যদি প্রয়োজন হয় তবে কোডটিকে কোনও প্রকল্পে ডুবানোর আগে সংশোধন করতে হবে এবং এটি ভুলে যেতে হবে।
আরজং

0

বেশিরভাগ ক্ষেত্রে, আপনি নেট এ খুঁজে পাবেন যে কোড আপনার সঠিক উদ্দেশ্য ফিট করে না।

নিজেকে যা দেখছে তা হ'ল কারও কাছ থেকে কোড অনুলিপি করা, একে একে একে একে নীচে নামিয়ে দেওয়া এবং তারপরে কোড যুক্ত করা পর্যন্ত এটি আমার প্রয়োজনীয়তা পূরণ করে না। আমি আমার নামকরণের সম্মেলন এবং কোডিং শৈলীর সাথে মেলে এটি সর্বদা রিফ্যাক্টর করব।

আমি টিউটোরিয়াল পড়লে আমি ব্যক্তিগতভাবে এটিকে ঘৃণা করি এবং তারা কোনও জটিল মামলার কোড দেখিয়ে শুরু করে। কোডটি প্রসারিত করার জন্য সারাংশ দিয়ে শুরু করুন এবং বিল্ডিং ব্লকগুলি দেখান। যদি আমি কোনও নিজস্ব ব্লগ শুরু করি তবে আমি লোকদের একটি মন্তব্য কোড উদাহরণ সরবরাহ করব যা আমি কী করতে চাই তার সারমর্মটি দেখায়, কীভাবে আপনি কার্যকারিতা / বিশেষ ক্ষেত্রে যুক্ত করতে পারেন এবং মৌলিক বৈশিষ্ট্যের সম্পূর্ণ কার্যকারী উদাহরণ example


-1

কোডটি কী করছে তা বুঝতে পেরে কেন চাকাটি পুনর্বার করুন, কোডটি পুনরায় ব্যবহার করার অনুমতি রয়েছে (অথবা এটি খোলা) এবং অন্য ব্যক্তি যে সমস্ত কোড লিখেছিল সেগুলি আপনার প্রয়োজনীয়ভাবে প্রয়োজন নেই। আমি প্রায়শই একটি অ্যালগরিদম বাস্তবায়ন অনুলিপি করি এবং এটি নিজের প্রয়োজন অনুসারে সংশোধন করি। সাধারণত যদিও আমি কেবল কাটা এবং পেস্ট করার সময় এটি কারণ কারণ আমার উদাহরণে থাকা সমস্ত কিছুই দরকার নেই তাই অন্য কোনও ফাইল যুক্ত করা কেবল অপচয় হবে (বা এটি কোনও ফাংশনের অভ্যন্তরের কিছু)। আমি জেজেডির সাথে একমত যদি আপনি একই প্রকল্পের মধ্যে নিজের কোডটি কেটে পেস্ট করে থাকেন তবে কোনওরকম ভুল হচ্ছে এবং সম্ভবত এটির স্বাধীনতা বা ফাংশনটি ভাগ করে নেওয়ার জন্য আপনার কোনও অর্থনৈতিক উপায় বের করা উচিত।


-1

আমি দেখতে পেয়েছি যে " ইন্টিগ্রেশন " দলের সদস্যরা বা যাদের কোডের সাথে বা প্রোগ্রামিংয়ে তেমন অভিজ্ঞতা নেই তারা অনুলিপি করে অনুলিপি করে পেস্ট করেন এবং কী করেন তা বুঝতে পারেন না (আপনার প্রশ্নে উল্লিখিত সমস্যার মধ্যে পড়ে)।

আমি আরও দেখতে পেলাম যে প্রোগ্রামাররা প্রায়শই তাদের নিজস্ব ছাগিন কাটতে এবং পেস্ট করা থেকে দূরে থাকে কারণ তারা কোড পছন্দ করে এবং প্রায়শই চাকাটি পুনরায় উদ্ভাবন করে, কারণ তারা এটি আরও ভাল করতে বা আরও শিখতে চায়।


পুনর্নবীকরণের জন্য +1। আমি নিজের থেকে অনুলিপি কোডিংয়ের পরিবর্তে ইন্টারনেট থেকে অনেক সময় পুনরায় লেখার কোড খুঁজে পাই। আমি অনুমান করি যে আমি এটি করি কারণ আমি সময়সীমার মধ্যে সীমাবদ্ধ নই। আমি অবাধে নিজের দ্বারা শিখতে পারি এবং আমি যখন চাই তখন কী শিখতে পারি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.