एस = एकल जिम्मेदारी सिद्धांत
इसलिए मैं एक अच्छी तरह से संगठित फ़ोल्डर / फ़ाइल संरचना और ऑब्जेक्ट पदानुक्रम देखने की उम्मीद करूंगा। कार्यक्षमता के प्रत्येक वर्ग / टुकड़े का नाम दिया जाना चाहिए कि इसकी कार्यक्षमता बहुत स्पष्ट है, और इसमें केवल उस कार्य को करने के लिए तर्क होना चाहिए।
यदि आपने कोड की हजार लाइनों के साथ विशाल प्रबंधक कक्षाएं देखीं, तो यह एक संकेत होगा कि एकल जिम्मेदारी का पालन नहीं किया जा रहा है।
ओ = खुला / बंद सिद्धांत
यह मूल रूप से विचार है कि नई कार्यक्षमता को नई कक्षाओं के माध्यम से जोड़ा जाना चाहिए, जिनका मौजूदा कार्यक्षमता के संशोधन / आवश्यकता पर न्यूनतम प्रभाव पड़ता है।
मैं वास्तविक कार्यान्वयन से कार्यक्षमता के टुकड़े को अलग करने के लिए ऑब्जेक्ट इनहेरिटेंस, सब-टाइपिंग, इंटरफेस और एब्स्ट्रैक्ट क्लास के बहुत सारे उपयोग देखने की उम्मीद करता हूं, जिससे दूसरों को साथ आने और अन्य संस्करणों को बिना प्रभावित किए लागू करने की अनुमति मिलती है। मूल।
एल = लिस्कोव प्रतिस्थापन सिद्धांत
यह उप-प्रकारों को उनके मूल प्रकार के रूप में व्यवहार करने की क्षमता के साथ करना है। यह सी # में बॉक्स से बाहर आता है यदि आप एक उचित विरासत वाली वस्तु पदानुक्रम को लागू कर रहे हैं।
मैं कोड को सामान्य वस्तुओं को उनके आधार प्रकार के रूप में देखने की उम्मीद करता हूं और आधार / अमूर्त वर्गों पर कॉल करने के तरीकों को त्वरित करने और उप-प्रकारों पर काम करने के बजाय खुद को देखता हूं।
I = इंटरफ़ेस अलगाव सिद्धांत
यह एसआरपी के समान है। असल में, आप कार्यक्षमता के छोटे उपसमुच्चय को परिभाषित करते हैं और आपके सिस्टम को डिकूप्टेड रखने के लिए उन लोगों के साथ काम करते हैं (जैसे FileManager
फ़ाइल I / O के साथ काम करने की एकल जिम्मेदारी हो सकती है, लेकिन यह एक को लागू कर सकता है IFileReader
और IFileWriter
जिसमें पढ़ने के लिए विशिष्ट विधि परिभाषाएं शामिल हैं। और फाइलों का लेखन)।
डी = निर्भरता उलटा सिद्धांत।
फिर से यह एक प्रणाली को डिकोड किए जाने से संबंधित है। शायद आप एक .NET डिपेंडेंसी इंजेक्शन लाइब्रेरी के उपयोग की तलाश में होंगे, जैसे कि Unity
या इस तरह के Ninject
एक ServiceLocator सिस्टम के समाधान में उपयोग किया जा रहा है AutoFacServiceLocator
।