जब भी मैं एंटी- पैटर्न, मैं एक और शब्द याद करते हैं जैसे। डिजाइन गंध ।
"डिजाइन गंध डिजाइन में कुछ संरचनाओं कि मौलिक डिजाइन सिद्धांतों के उल्लंघन से संकेत मिलता है और नकारात्मक डिजाइन गुणवत्ता को प्रभावित कर रहे हैं" (से "सॉफ्टवेयर डिजाइन के लिए पुनर्रचना खुशबू: तकनीकी ऋण प्रबंध")
कई डिजाइन गंध रहे हैं
अमूर्त बदबू आ रही है
अमूर्त लापता:: डिजाइन सिद्धांतों का उल्लंघन करने के आधार पर वर्गीकृत यह गंध पैदा होती है जब डेटा या इनकोडिंग str के गुच्छों कक्षा या इंटरफ़ेस बनाने के बजाय ings का उपयोग किया जाता है।
इंपीरेटिव एब्स्ट्रक्शन: यह गंध उत्पन्न होती है जब एक ऑपरेशन कक्षा में बदल जाता है।
अपूर्ण अमूर्तता: यह गंध तब उत्पन्न होती है जब एक अमूर्त पूरक या पारस्परिक तरीकों का पूरी तरह से समर्थन नहीं करता है।
मल्टीफासिटेड एब्स्ट्रक्शन: यह गंध उत्पन्न होती है जब एक अमूर्तता को एक से अधिक ज़िम्मेदारी सौंपी जाती है।
अनावश्यक सार तत्व: यह गंध तब होती है जब एक अमूर्तता की आवश्यकता नहीं होती है (और इस तरह से बचा जा सकता है) एक सॉफ्टवेयर डिजाइन में पेश किया जाता है।
अप्रयुक्त अबास्ट्रक्शन: यह गंध तब उत्पन्न होती है जब एक अमूर्तता का उपयोग नहीं किया जाता है (या तो सीधे उपयोग नहीं किया जाता है या पहुंच योग्य नहीं होता है)।
डुप्लिकेट एब्स्ट्रक्शन: यह गंध उत्पन्न होती है जब दो या दो से अधिक अवशेषों के समान नाम या समान कार्यान्वयन या दोनों होते हैं।
Encapsulation बदबू आ रही है
कमी Encapsulation: यह गंध तब होता है जब एक अमूर्त के एक या अधिक सदस्यों की घोषणा की पहुंच अधिक अनुमोदक वास्तव में आवश्यकता से है।
लीकी Encapsulation: यह गंध तब उत्पन्न होती है जब एक अमूर्तता अपने सार्वजनिक इंटरफ़ेस के माध्यम से कार्यान्वयन का विवरण "खुलासा" या "लीक" करता है।
गुम Encapsulation: यह गंध तब होती है जब क्रियान्वयन विविधता एक अमूर्त या पदानुक्रम के भीतर encapsulated नहीं हैं।
unexploited Encapsulation: जब ग्राहक कोड स्पष्ट प्रकार चेकों का उपयोग करता है के बजाय पहले से ही एक पदानुक्रम के भीतर समझाया प्रकार में भिन्नता का शोषण करने का (अगर-बाकी या बयान है कि वस्तु के प्रकार के लिए जाँच स्विच जंजीर का प्रयोग करके) यह गंध उत्पन्न होती है।
Modularization बदबू आ रही है
टूटी Modularization: यह गंध पैदा होती है जब डेटा और/या तरीकों कि आदर्श रूप में एक भी अमूर्त में अनुवाद किया जाना चाहिए था अलग कर दिया और कई कपोल-कल्पना भर में फैले हुए हैं।
अपर्याप्त Modularization: यह गंध पैदा होती है एक अमूर्त मौजूद न होने पर कि पूरी तरह से विघटित नहीं किया गया है, और एक और अपघटन इसके आकार, कार्यान्वयन जटिलता, या दोनों को कम कर सकता।
Cyclically पर निर्भर Modularization: यह गंध पैदा होती है जब दो या अधिक कपोल-कल्पना एक दूसरे को प्रत्यक्ष या परोक्ष रूप (कपोल-कल्पना के बीच एक तंग युग्मन बनाने) पर निर्भर हैं।
हब की तरह Modularization: यह गंध पैदा होती है एक अमूर्त अन्य पृथक्करण की एक बड़ी संख्या के साथ निर्भरता (दोनों आवक और जावक) को रखता हो।
पदानुक्रम
बदबू आ रही है गुम पदानुक्रम: जब एक कोड खंड सशर्त तर्क का उपयोग करता यह गंध पैदा होती है स्पष्ट रूप से व्यवहार में विभेद है जहां एक पदानुक्रम बनाया जा सकता था प्रबंधन करने के लिए (आमतौर पर के साथ "टैग प्रकार" संयोजन के रूप में) और उन बदलावों को समाहित करने के लिए प्रयोग किया जाता है।
अनावश्यक पदानुक्रम: यह गंध तब उत्पन्न होती है जब संपूर्ण विरासत पदानुक्रम अनावश्यक है, यह दर्शाता है कि विशेष डिजाइन संदर्भ के लिए विरासत को अनिवार्य रूप से लागू किया गया है।
असुरक्षित पदानुक्रम: यह गंध तब उत्पन्न होती है जब पदानुक्रम में प्रकारों के बीच अनावश्यक डुप्लिकेशंस होता है।
वाइड पदानुक्रम: यह गंध पैदा होती है एक वंशानुगत पदानुक्रम है जब "भी" विस्तृत यह दर्शाता है कि मध्यवर्ती प्रकार गायब हो सकता है।
सट्टा पदानुक्रम: यह गंध उत्पन्न होती है जब पदानुक्रम में एक या एक से अधिक प्रकार अनुमानित रूप से प्रदान किए जाते हैं (यानी वास्तविक आवश्यकताओं के बजाय कल्पना की जरूरतों के आधार पर)।
दीप पदानुक्रम: यह गंध उत्पन्न होती है जब एक विरासत पदानुक्रम "अत्यधिक" गहरा होता है।
विद्रोही पदानुक्रम: यह गंध उत्पन्न होती है जब उपप्रकार अपने सुपरटेप द्वारा प्रदान की गई विधियों को अस्वीकार करता है।
टूटी पदानुक्रम: यह गंध पैदा होती है जब एक महाप्रकार और उसके उप-प्रकार धारणात्मक एक "है- ए 'रिश्ते टूटे प्रतिस्थापन में जिसके परिणामस्वरूप का हिस्सा नहीं है।
बहुपथ पदानुक्रम: यह गंध पैदा होती है जब एक उप-प्रकार दोनों एक महाप्रकार पदानुक्रम में अनावश्यक विरासत पथ के लिए अग्रणी से सीधे और साथ ही परोक्ष रूप से इनहेरिट करती है।
चक्रीय पदानुक्रम: यह गंध उत्पन्न होती है जब पदानुक्रम में एक सुपरटेप इसके किसी उपप्रकार पर निर्भर करता है।
उपरोक्त परिभाषा और वर्गीकरण "Refactoring for software design smells: Managing technical debt में वर्णित है "। कुछ और प्रासंगिक संसाधनों here पाया जा सकता है।
https://sourcemaking.com/antipatterns – jaco0646
http://martinfowler.com/bliki/AntiPattern.html – jaco0646