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