केंद्र पर पहुंचानेवाला
अगर कुछ अलग सामान का एक गुच्छा (उच्च संख्या में अभिवाही कपलिंग) का उपयोग करता है, तो उन चीजों में से किसी को बदलने पर यह टूटने का खतरा हो सकता है।
अस्थिरता = १
केंद्रत्यागी
अगर किसी चीज का इस्तेमाल अलग-अलग सामान (उच्च संख्या में अपक्षय युग्मों) के एक समूह द्वारा किया जाता है, तो इसे बदलने पर बहुत सी चीजों को तोड़ने का खतरा हो सकता है।
अस्थिरता = ०
स्थिरता
मार्टिन की "स्थिरता" की परिभाषा "बदलने के लिए मुश्किल" और "बदलने के कुछ कारण होने" के बीच एक विदेशी मिश्रण है। फिर भी उनकी अस्थिरता मीट्रिक केवल "परिवर्तन की कठिनाई" का वर्णन करती है। "परिवर्तन के कारण" उन कारकों के साथ बहुत अधिक होगा जिन्हें आसानी से गणना नहीं की जा सकती है, जैसे कि उचित रूप से अमूर्त स्तर पर, उचित रूप से आपके इंटरफेस को डिजाइन करना, और उपयोगकर्ता-अंत की आवश्यकताओं को अधिक स्पष्ट रूप से समझना।
तो उच्च अभिवाही युग्मन कम अभिवाही युग्मन पैदावार स्थिरता के साथ (जैसा कि कुछ बदलने के लिए मुश्किल है क्योंकि यह सामान का एक गुच्छा तोड़ देगा), विपरीत पैदावार अस्थिरता (जैसा कि सामान का एक गुच्छा नहीं टूटेगा कुछ बदलने के लिए आसान है) ।
बड़ी संख्या में अभिवाही कपलिंग एक संकेतक हो सकते हैं कि आपके डिजाइन में फोकस की कमी है - यह विभिन्न सामानों के एक पूरे गुच्छा का उपयोग कर रहा है, इसलिए शायद इसमें एक स्पष्ट, एकवचन जिम्मेदारी का अभाव है।
बड़ी संख्या में अपक्षय युग्मों को शुरू में वास्तव में एक अच्छी चीज के रूप में व्याख्या किया जा सकता है, क्योंकि यह इंगित करता है कि आपके डिजाइन का व्यापक रूप से उपयोग किया जा रहा है। फिर भी यह बुरा होगा यदि आप डिजाइन को बदलने के लिए परीक्षाओं में अक्सर ऐसा महसूस करते हैं जो सब कुछ तोड़ देता है। इस तरह के पैकेजों की बड़ी संख्या के साथ ऐसे पैकेजों की आवश्यकता होती है जिनके पास "कुछ या कोई कारण नहीं" हो। डिजाइन को बदलने के कारणों के नहीं होने के आदर्श अर्थ में स्थिर होना चाहिए, क्योंकि वे इसी तरह बदलना बहुत मुश्किल होगा।
स्थिर सार सिद्धांत
निर्भरता प्रत्यावर्तन (जो स्वाभाविक रूप से निर्भरता इंजेक्शन के लिए कहता है) और SAP (स्थिर अमूर्त सिद्धांत) जैसी अवधारणाओं का सुझाव है कि निर्भरता अमूर्तता की ओर बहती है। और जब "परिवर्तन के कुछ कारण" होने के संदर्भ में "स्थिरता" पर विचार करने का एक सरल कारण है। एक सार इंटरफ़ेस में कोई ठोस विवरण नहीं है, यह केवल "क्या करना है" के बजाय "क्या करना है" पर केंद्रित है, और इस प्रकार परिवर्तन के कम कारण हैं। हमारी मदरबोर्ड (एब्स्ट्रैक्ट इंटरफेस) पर त्वरित ग्राफिक्स पोर्ट के पास GPU (जो एक ठोस विवरण है) की तुलना में डिज़ाइन परिवर्तन से गुजरने के कम कारण हैं।
पुन: प्रयोज्य बनाम पुन: उपयोग
अपनी खुद की मीट्रिक का एक निजी प्रकार यदि मैं सुझाव दे सकता हूं कि जो कुछ मार्टिन के साथ टकराता है, तो क्या यह धारणा मुझे धक्का देना पसंद करती है कि सबसे पुन: प्रयोज्य पुस्तकालयों को अन्य कोड का पुन: उपयोग करने की मांग करनी चाहिए। यह एक कठिनता की ओर अस्थिरता को बढ़ाता है 0. यह परिवर्तन के न्यूनतम कारणों के व्यावहारिक कारणों के लिए है, लेकिन तैनाती के लिए सबसे आसान पुस्तकालय को बढ़ावा देने के लिए भी है। एक सामान्य-उद्देश्य, व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी जो एक दर्जन विभिन्न पुस्तकालयों पर निर्भर करती है, में बदलाव के कई कारण हैं, साथ ही एक अजीब-से बंडल वितरण है जिसे तैनात करना मुश्किल हो सकता है। यहां अंतर यह है कि मेरे मामले में "बदलने का कारण" कार्यान्वयन तक भी फैला हुआ है, क्योंकि यह पुस्तकालय-उन्मुख दृष्टिकोण से आ रहा है जो पुस्तकालय के स्थिर संस्करणों को जारी करना चाहता है। मार्टिन एक बहुत अलग भाग के रूप में कार्यान्वयन को छूट दे सकते हैं,
देखने के वितरण बिंदु से, कार्यान्वयन और इंटरफ़ेस एक स्थिर या अस्थिर पुस्तकालय के लिए उपयोगकर्ता निर्भरता प्राप्त करने के लिए एक साथ धुंधला हो जाता है। इंटरफ़ेस के दृष्टिकोण से, केवल इंटरफ़ेस का उपयोग किया जाता है और इससे जुड़े कार्यान्वयन विवरण पूरी तरह से अलग होते हैं।