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