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