আমার সফ্টওয়্যার ডেভেলপমেন্ট ক্যারিয়ারের সময় আমি যে বইগুলো পড়েছিলাম তার মধ্যে একটি সবচেয়ে মূল্যবান ধারনা হল "নিজেকে পুনরাবৃত্তি করবেন না"। আপনি যদি ডুপ্লিকেট কোড রিফ্যাক্টর করতে পারেন তবে আপনি আরও সাধারণ, আরও স্থিতিশীল কোড তৈরি করবেন। আপনি যখন আপনার কোড ড্রাই-আপ করা শুরু করেন, যদিও, আপনি কিছু সমস্যায় পড়তে শুরু করবেন:যে কোডটি এজ কেসগুলিকে ভালভাবে পরিচালনা করে না, কোড যেটি খুব সাধারণীকৃত এবং পড়া কঠিন, বা এমন কোড যা খুঁজে পাওয়া কঠিন। যদি শুষ্কতার দিকে রিফ্যাক্টরিং সব সময় কাজ না করে, তাহলে আপনি কিভাবে বুঝবেন কখন রিফ্যাক্টর করা উচিত?
টু-ড্রাই কোড কি ধরনের অনুলিপি আপনার রিফ্যাক্টর দূর করার চেষ্টা করা উচিত সে সম্পর্কে একটি ভুল বোঝাবুঝি থেকে আসে। আপনাকে প্রয়োজনীয় এর মধ্যে পার্থক্য সনাক্ত করতে সক্ষম হতে হবে নকল এবং দুর্ঘটনাজনিত ডুপ্লিকেশন।
প্রয়োজনীয় ডুপ্লিকেশন হল কোড যা আপনি যে শ্রেণীতে কাজ করছেন তার সমস্যার সমাধান করে। এটি এমন নকল যা আপনার এখনই মেরে ফেলা উচিত।
দুর্ঘটনাজনিত সদৃশ, যদিও, সদৃশতা যা হাতের সমস্যার সাথে সম্পর্কিত নয়, "কাকতালীয়ভাবে নকল।" আপনি যদি দুর্ঘটনাজনিত ডুপ্লিকেশন খুব আক্রমণাত্মকভাবে পরিষ্কার করেন, তাহলে আপনি আরও ভঙ্গুর কোড পাবেন যা নতুন কেস যুক্ত হওয়ার সাথে সাথে আন-রিফ্যাক্টর করতে হবে।
কিন্তু কিভাবে আপনি পার্থক্য বলতে পারেন? অভিজ্ঞতার সাথে, আপনি এতে আরও ভাল হতে পারেন, তবে কয়েক দশক ধরে প্রোগ্রামিং করার পরেও, আমি এখনও অর্ধেক সময়ও এটি সঠিকভাবে করতে পারি না। ভাগ্যক্রমে, একটি সাধারণ নিয়ম রয়েছে যা অনেক সাহায্য করে:থ্রি স্ট্রাইক এবং ইউ রিফ্যাক্টর৷
প্রথমবার যখন আপনি কিছু করেন, আপনি শুধু তা করেন।
দ্বিতীয়বার যখন আপনি অনুরূপ কিছু করেন, আপনি নকল দেখে ঝাঁপিয়ে পড়বেন, কিন্তু আপনি যেভাবেই হোক নকল জিনিসটি করবেন।
তৃতীয়বার আপনি অনুরূপ কিছু করবেন, আপনি রিফ্যাক্টর।
আপনি দেখতে পারেন কেন এটি সাহায্য করে? তৃতীয়বারের মধ্যে, আপনার নিদর্শনগুলি কোথায় আছে তা দেখতে শুরু করা উচিত। আপনার সমস্যা সমাধানের জন্য কোন ডুপ্লিকেট কোডটি প্রয়োজনীয় এবং কোন কোডটি কাকতালীয়ভাবে একই দেখায় সে সম্পর্কে আপনার ধারণা থাকা উচিত। আপনি মৌলিকভাবে কোডটি সাধারণীকরণ (এবং শুকিয়ে) করা শুরু করতে পারেন আপনি যে সমস্যার সমাধান করার চেষ্টা করছেন তার সমস্ত দৃষ্টান্তে একই।
এক মুহূর্ত সময় নিন এবং শেষ বার রিফ্যাক্টরিং আপনাকে ব্যথার কারণ সম্পর্কে চিন্তা করুন। আপনি কি এমন কিছু শুকানোর চেষ্টা করছেন যা সমস্যার দুটি কপির মধ্যে সদৃশ ছিল, কিন্তু তৃতীয় কপিটি একটু ভিন্ন ছিল?
এবং পরের বার যখন আপনি মনে করেন যে আপনাকে কিছু কোড ডুপ্লিকেট করতে হবে, আপনি রিফ্যাক্টর করার আগে তৃতীয় কপি পর্যন্ত অপেক্ষা করার চেষ্টা করুন। (এটি সত্যিই কঠিন এবং ভয়ানক বোধ করে, তবে আপনার চোখ বন্ধ করুন এবং এটি চেষ্টা করুন)। তারপরে, আপনি কোডটি শুকানোর সাথে সাথে এটি সম্পর্কে চিন্তা করুন। দ্বিতীয় কপি লেখার ঠিক পরে রিফ্যাক্টর করলে আপনি কি ভিন্নভাবে রিফ্যাক্টর করছেন?