আপনি ঠিক বলেছেন - অনুলিপি-পেস্ট দুর্দান্ত কাজ করে এবং যখন আপনার কাজটি এমন কোনও প্রোগ্রাম তৈরি করা হয় যার জন্য অনুলিপি করা টেমপ্লেট বা অনুলিপিটি ভবিষ্যতে বজায় রাখা বা বিবর্তিত না হয় DR যখন এই দুটি সফ্টওয়্যার উপাদানগুলির একটি সম্পূর্ণ পৃথক জীবন চক্র থাকে, তারপরে এগুলি একত্রে প্রচলিত কোডকে একটি সাধারণ লিবিতে সংশোধন করে একত্রে যুক্ত করে তোলে যা নিজেই ভারী বিকাশের অধীনে থাকে ফলে প্রচেষ্টার জন্য অবিশ্বাস্য প্রভাব থাকতে পারে। অন্যদিকে, কোনও প্রোগ্রাম বা প্রোগ্রাম সিস্টেমের মধ্যে কোড বিভাগগুলি অনুলিপি করার সময়, এই সমস্ত অংশগুলির সাধারণত জীবনচক্র থাকে। DRY এবং প্রকল্প পরিচালনার জন্য এর অর্থ কী তা আমি নীচে চিত্রিত করব।
গুরুতরভাবে, এই জাতীয় প্রচুর প্রোগ্রাম রয়েছে: উদাহরণস্বরূপ, কম্পিউটার গেম শিল্প অনেকগুলি প্রোগ্রাম তৈরি করে যা কিছু মাস বা এক বছরের জন্য স্বল্প সময়ের মধ্যে বজায় রাখতে হয় এবং যখন সময়টি শেষ হয়, অনুলিপি-পেস্ট করা হয় পূর্ববর্তী গেমের পুরানো কোড যেখানে রক্ষণাবেক্ষণের সময়সীমা ছাড়িয়ে গেছে, কোনও নতুন গেমের কোড বেসটিতে পুরোপুরি সূক্ষ্ম এবং জিনিসগুলি গতি বাড়িয়ে দিতে পারে।
দুর্ভাগ্যক্রমে, আমি গত বছরের বেশিরভাগ প্রোগ্রামগুলির সাথে আমার সবচেয়ে বেশি প্রোগ্রামগুলির জীবনচক্রের মুখোমুখি হয়েছিলাম that আমার কাছে আসা 98% প্রয়োজনীয়তা বা বাগ ফিক্স অনুরোধগুলি হ'ল পরিবর্তনের অনুরোধগুলিবিদ্যমান প্রোগ্রামের জন্য। এবং যখনই আপনার বিদ্যমান সফ্টওয়্যারটির কোনও অংশে কিছু বদলাতে হবে, যখন আপনার পরীক্ষা এবং ডিবাগিংয়ের প্রচেষ্টা যথেষ্ট কম হয় তখন "প্রকল্প পরিচালনা" বা পরিকল্পনা সবচেয়ে ভাল কাজ করে - আপনি যদি এক জায়গায় কিছু বদলান তবে এটি হবে না, তবে অনুলিপিটির কারণে -পাস্টেড ব্যবসায়ের যুক্তি আপনি সহজেই ভুলে যান যে আপনাকে কোড বেসে আরও কয়েকটি ডজন স্থান পরিবর্তন করতে হবে। এমনকি যদি আপনি এই সমস্ত জায়গাগুলি সন্ধান করেন তবে এগুলি সমস্ত পরিবর্তন করার (এবং পরিবর্তনগুলি পরীক্ষা করার) সময়টি সম্ভবত আরও অনেক বেশি হ'ল যেন আপনার একমাত্র স্থান পরিবর্তনের রয়েছে। এমনকি আপনি এই প্রকল্পটির বাজেটের সাথে খুব সহজেই সংঘর্ষে পড়তে পারে এমন ব্যয়টি তার চেয়ে কয়েকগুণ বেশি হওয়াতেও আপনি এই পরিবর্তনটির জন্য সঠিক অনুমান করতে পারেন।
টিএলডিআর - আপনি যখনই এমন কোনও প্রোগ্রাম তৈরি করেন যেখানে আসল বা অনুলিপিটির বাগফিক্সিং এবং রক্ষণাবেক্ষণের কোনও প্রয়োজন বা দায়বদ্ধতা নেই, অনুলিপি করুন। তবে আপনি, আপনার দল বা আপনার সংস্থা যদি দায়বদ্ধ হয় বা হতে পারে তবে আপনি যখনই পারেন ডিআরওয়াই প্রয়োগ করুন।
উদাহরণ
সংযোজন হিসাবে, আমাকে "বাগফিক্সিং এবং রক্ষণাবেক্ষণ" এর অর্থ কী এবং এটি কীভাবে পরিকল্পনায় অনির্দিষ্টকালের দিকে পরিচালিত করে, বিশেষত একটি পণ্যের অভ্যন্তরে, একটি বাস্তব-বিশ্বের উদাহরণ দ্বারা। আমি প্রকৃতপক্ষে এই ধরণের জিনিসগুলি বাস্তবে ঘটতে দেখেছি, সম্ভবত 100 টি উদাহরণ নয়, তবে সমস্যাগুলি তখনও শুরু হতে পারে যখন আপনার কেবলমাত্র একটি সদৃশ উদাহরণ রয়েছে।
কাজটি: একটি অ্যাপ্লিকেশনটির জন্য 100 টি আলাদা প্রতিবেদন তৈরি করুন, প্রতিটি প্রতিবেদনটি খুব একইরকম দেখাচ্ছে, প্রতিবেদনের মধ্যে কিছু প্রয়োজনীয়তার পার্থক্য রয়েছে, কিছু আলাদা যুক্তি রয়েছে, তবে সব মিলিয়ে খুব বেশি পার্থক্য নয়।
যে দেবটি এই টাস্কটি পাবে প্রথমটি তৈরি করে (বলুন এটি 3 দিন লাগে), কিউএ এবং গ্রাহক পরিদর্শনের কারণে কিছু পরিবর্তন বা ছোট বাগ ফিক্স করার পরে, এটি ঠিকঠাক বলে মনে হচ্ছে। তারপরে তিনি অনুলিপিটি পুরোপুরি কপি-পেস্ট করে এবং তারপরে পরের প্রতিবেদনটি তৈরি করে শুরু করেছিলেন এবং প্রতিটি নতুন প্রতিবেদনের জন্য তাঁর গড়ে গড়ে ~ 1 দিন প্রয়োজন। খুব অনুমানযোগ্য, প্রথম নজরে ...
এখন, 100 টি প্রতিবেদন "প্রস্তুত" হওয়ার পরে, প্রোগ্রামটি আসল উত্পাদনে যায় এবং কিছু সমস্যা দেখা দেয় যা QA এর সময় উপেক্ষা করা হয়েছিল। পারফরম্যান্সে সমস্যা থাকতে পারে, নিয়মিত রিপোর্টগুলি ক্র্যাশ হতে পারে, অন্য জিনিসগুলি যেমন ইচ্ছা তেমন কাজ করে না। এখন, যখন ডিআরওয়াই নীতিটি প্রয়োগ করা হয়েছিল, তখন এই জায়গাগুলির 90% কোড এক জায়গায় কোড বেস পরিবর্তন করে সমাধান করা যেতে পারে। তবে অনুলিপি-পেস্ট পদ্ধতির কারণে সমস্যাটি একবারের পরিবর্তে 100 বার সমাধান করতে হবে। এবং ইতিমধ্যে এক প্রতিবেদন থেকে অন্য প্রতিবেদনে প্রয়োগ হওয়া পরিবর্তনের কারণে দেব প্রথম প্রতিবেদনের জন্য এই সমস্যাটি অন্য 99 টির মধ্যে দ্রুত অনুলিপি করতে পারবেন না He তাকে সমস্ত 100 টি প্রতিবেদন সন্ধান করতে হবে, সেগুলি পড়তে হবে, পরিবর্তনটি পরিবর্তিতভাবে অনুবাদ করতে হবে রিপোর্ট করুন, এটি পরীক্ষা করুন এবং সম্ভবত এটির প্রতিটি পৃথকভাবে ডিবাগ করুন। প্রধানমন্ত্রীর জন্য, এটি সত্যই শক্ত হয়ে উঠতে শুরু করে - তিনি অবশ্যই "নিয়মিত" বাগ ফিক্সের জন্য সময় নিতে পারেন (বলুন, 3 ঘন্টা) এবং এটি 100 দ্বারা গুণা করতে পারেন, তবে আসলে এটি সম্ভবত একটি ভুল অনুমান, কিছু সমাধানগুলি হতে পারে অন্যের তুলনায় সহজতর, অন্যেরা আরও কঠিন হতে পারে। এমনকি যদি এই অনুমানটি সঠিক হয় তবে ডিবাগিংয়ের প্রয়োজন হওয়াতে তার চেয়ে 100 গুণ বেশি দাম পড়লে আপনার সংস্থাকে প্রচুর অর্থ ব্যয় করতে হবে।
পৃষ্ঠার আকারটি কনফিগারযোগ্য করার জন্য, বা অন্য কোনও প্রয়োজনীয় প্রয়োজনে যা সমস্ত প্রতিবেদনকে একইভাবে প্রভাবিত করে সেই সমস্ত প্রতিবেদনে গ্রাহক তার কোম্পানির প্রতীকটির রঙ পরিবর্তন করার জন্য অনুরোধ করলে পরবর্তী সময়ে তা ঘটবে। সুতরাং যদি এটি হয়, আপনি ব্যয়ের জন্য একটি অনুমান করতে পারেন এবং কোডটি ডিআরওয়াই করার সময় গ্রাহককে তার যে মূল্য দিতে হবে তার 100 গুণ মূল্য দিতে পারেন। তবে কয়েকবার চেষ্টা করে দেখুন এবং তারপরে গ্রাহক প্রকল্পটি বাতিল করবেন কারণ তিনি সম্ভবত আপনার অত্যধিক বিবর্তন ব্যয় দিতে রাজি নন। এবং সম্ভবত এই মুহুর্তে কেউ এই প্রশ্নটি জিজ্ঞাসা করবে কেন এমনটি ঘটেছিল এবং এই অনুলিপি-পেস্ট প্রোগ্রামিংয়ের জন্য যে ব্যক্তি সিদ্ধান্ত নিয়েছিল তার দিকে আঙুল দিয়ে ইশারা করবে।
আমার বক্তব্যটি হ'ল: আপনি যখন অন্যের জন্য সফ্টওয়্যার তৈরি করেন, আপনি সর্বদা স্বল্প সময়ের জন্য জিনিসটি কাজ করার, বাগগুলি সংশোধন করার, প্রোগ্রামটিকে প্রয়োজনীয় পরিবর্তনগুলি ইত্যাদির সাথে খাপ খাওয়ানোর দায়িত্ব ইত্যাদিও সবুজ-ক্ষেত্রের প্রকল্পে, এগুলি অংশগুলি প্রাথমিকভাবে পরিকল্পিত উন্নয়ন প্রচেষ্টা থেকে অনেক বেশি যোগ করতে পারে। এবং বিশেষত যখন আপনার সমস্ত অনুলিপি-আটকানো কোড একটি পণ্যের ভিতরে থাকে, তখন দায়িত্বের সময়কাল সমস্ত অংশের জন্য একই রকম হয়, যা আপনি কোনও মৃত প্রজেক্ট থেকে কিছু পুরানো কোড অনুলিপি-করা হয়েছে যা থেকে আলাদা different সক্রিয় রক্ষণাবেক্ষণ অধীনে।