क्या एसआरपी (एकल जिम्मेदारी सिद्धांत) उद्देश्य है?


17

दो यूआई डिजाइनरों पर विचार करें जो "उपयोगकर्ता आकर्षक" डिजाइन तैयार करना चाहते हैं। "उपयोगकर्ता आकर्षण" एक अवधारणा है जो उद्देश्य नहीं है और केवल डिजाइनरों के दिमाग में रहता है। इस प्रकार डिजाइनर ए उदाहरण के लिए लाल रंग चुन सकता है, जबकि डिजाइनर बी नीले रंग को चुनता है। डिजाइनर ए एक लेआउट बनाते हैं जो डिजाइनर बी से पूरी तरह से अलग है, और इसी तरह।

मैंने एसआरपी (सिंगल रिस्पॉन्सिबिलिटी प्रिंसिपल) के बारे में पढ़ा और जो मैंने समझा वह एक व्यक्तिपरक विश्लेषण था या जिम्मेदारियों का टूटना था जो एक ओओ डिजाइनर से दूसरे ओओ डिजाइनर के लिए भिन्न हो सकता है। क्या मैं सही हू? दूसरे शब्दों में, क्या दो उत्कृष्ट वस्तु उन्मुख विश्लेषक और डिजाइनर होना संभव है जो एसआरपी प्रिंसिपल पर आधारित एक प्रणाली के लिए दो अलग-अलग डिजाइनों के साथ आते हैं?


4
मुझे लगता है कि किसी भी तरह की डिज़ाइन (कला, इंजीनियरिंग, ...) में निष्पक्षता और व्यक्तिपरकता का संतुलन है - कुछ स्पष्ट नियम और बाधाएं, कुछ अनुभव और निर्णय कॉल, और यहां तक ​​कि कुछ पूरी तरह से मुक्त सभी विकल्प-जैसे-अच्छे-जैसे प्रत्येक दूसरे विकल्प।
स्टीव

जवाबों:


12

एक अच्छा सवाल और एक मैं अक्सर खामोश हो जाता था।

मैं कहूंगा कि उद्देश्य नहीं, नहीं। निश्चित रूप से व्यक्तिपरक। आप समस्याओं के टूटने के तरीके के बारे में अपने दर्शन पर निर्भर करते हैं कि किस प्रकार की समस्या है। विज्ञान हमें दिखाता है कि एक ही समस्या को प्रभावी ढंग से हल करने के कई अलग-अलग तरीके हो सकते हैं। विज्ञान हमें यह भी दिखाता है कि अलग-अलग लोग एक ही समाधान के साथ स्वतंत्र रूप से आ सकते हैं, और इसलिए कुछ समाधान दूसरों की तुलना में अधिक स्पष्ट हैं। किसी भी मामले में, "सर्वोत्तम" के संदर्भ में समाधानों को पहचानना आपके मानदंडों पर निर्भर करता है।

वास्तव में, जो एक ही संपूर्ण के दो भागों के रूप में देख सकता है, दूसरे को दो अलग अवधारणाओं के रूप में देख सकते हैं। एक बार यह सब देखते हैं कि विभिन्न कोड पुस्तकालयों के अनुरक्षक एक ही समस्या को कैसे देखते हैं। और फिर भी दोनों समाधान बस ठीक काम करते हैं।

(PS। इस उत्तर को ओपी के अंतिम प्रश्न के रूप में संपादित किया गया है जो प्रश्न शीर्षक के विपरीत पूछता है।)


5

सिद्धांत स्वयं उद्देश्यपूर्ण है, लेकिन सिद्धांत का पालन करने वाली किसी चीज़ को लागू करने के इतने अलग-अलग तरीके हैं, कि दो स्वतंत्र डेवलपर्स लगभग हमेशा एक ही आवेदन के लिए अलग-अलग सिस्टम डिज़ाइन के साथ आएंगे।

यह भी संभावना है कि एक ही डेवलपर दो बार एक ही डिजाइन कर रहा है, फिर भी दो समाधानों के साथ आएगा जो कम से कम आंशिक रूप से भिन्न होंगे।

एक सिद्धांत के लिए सिस्टम डिज़ाइन को हमेशा एक समान दिखने के लिए, इसे डिज़ाइन निर्णयों के हर पहलू को कवर करना होगा। सिंगल जिम्मेदारी प्रिंसिपल केवल किसी भी सिस्टम डिजाइन को बनाने में शामिल डिजाइन निर्णयों के एक छोटे हिस्से को कवर करता है।


अच्छा विश्लेषण @Guffa। +1। मुझे सारा-का-पूरा नहीं होने का विचार पसंद आया। हाँ, एसआरपी आपको केवल एक मुद्दे के लिए सब कुछ जिम्मेदार बनाने की कोशिश करने के लिए कहता है। लेकिन यह आपको नहीं बताता कि जिम्मेदारी की सीमा कहां है।
सईद नेमाटी

2

सिद्धांत का अनुप्रयोग व्यक्तिपरक है। हालांकि, "व्यक्तिपरक" उसी तरह "वरीयता" के लिए समान नहीं है जिस तरह से सौंदर्यशास्त्र करते हैं।

स्पष्ट चरम सीमाएं हैं। ठीक एक विधि के साथ एक वर्ग, जिसमें कोड की केवल कुछ पंक्तियां होती हैं, जो किसी अन्य वर्ग को कॉल नहीं करता है, निश्चित रूप से एसआरपी का पालन कर रहा है। दूसरी ओर, दो तरीकों वाला एक वर्ग, जिसमें एक कच्चा ई-मेल के माध्यम से पूर्ण ई-मेल कार्यान्वयन होता है और दूसरा जो GUI फॉर्म बनाता है, निश्चित रूप से SRP का अनुसरण नहीं करता है।

सौंदर्यशास्त्र एक गरीब सादृश्य है। एक बेहतर सादृश्य, युग्मन और सामंजस्य की प्रसिद्ध कंप्यूटर विज्ञान अवधारणा होगी । इनमें से कोई भी श्वेत-श्याम, सच्ची-या-झूठी विशेषताएँ नहीं हैं। हालांकि, वे कर रहे हैं औसत दर्जे का, एक गुणात्मक तत्व नहीं है, भले ही। यदि आप एक ही सुविधा के लिए अनुभवी डेवलपर्स के दो अलग-अलग डिज़ाइन दिखाते हैं, तो वे समान रीडिंग देने जा रहे हैं, जिस पर डिज़ाइन में अधिक युग्मन और / या सामंजस्य है।

वास्तव में, एसआरपी अनिवार्य रूप से सिर्फ कार्यात्मक सामंजस्य है। यह कहता है कि कुछ मॉड्यूल (जैसे वर्ग) के भागों को एक साथ रखा जाना चाहिए क्योंकि वे सभी एक ही कार्य करने में योगदान करते हैं, और किसी अन्य कारण से नहीं। "फ़ंक्शन" व्याख्या के अधीन हो सकता है - कुछ लोग इसे शाब्दिक रूप से एकल फ़ंक्शन (या विधि या प्रक्रिया) घोषणा के रूप में व्याख्या कर सकते हैं , अन्य लोग थोड़ा पीछे हट सकते हैं और फ़ंक्शन के बारे में सोच सकते हैं "ई-मेल भेजना" या "संगीत चलाना" , लेकिन पैंतरेबाज़ी करने के लिए अभी भी बहुत जगह है। "सामान का प्रबंधन" एक वैध कार्यात्मक विवरण नहीं है।


0

"जिम्मेदारी" की एक उद्देश्य परिभाषा "बदलने का कारण" है। प्रोग्रामिंग के समय में भविष्य में झूठ को बदलने के सभी कारण हैं, इसलिए प्रोग्रामर केवल अपने अनुभव और डोमेन ज्ञान के आधार पर अनुमान लगा सकते हैं। इसलिए जिम्मेदारियों का विश्लेषण एक प्रकार का पूर्वानुमान है, आंशिक रूप से व्यक्तिपरक।


0

एसआरपी उद्देश्य है; कार्यान्वयन व्यक्तिपरक हैं

एक ही कार्यक्षमता वाले दो कार्यान्वयन पूरी तरह से अलग आंतरिक संरचनाओं का उपयोग कर सकते हैं, जिसके परिणामस्वरूप विभिन्न कक्षाएं और विधि होती हैं, और दोनों एसआरपी को संतुष्ट कर सकते हैं

यदि वे समान विधियों और स्थिति का उपयोग करते हैं, और दोनों सामान्यीकृत (न्यूनतम / गैर-निरर्थक) हैं, तो वे सिद्धांत रूप में - एसआरपी के तहत समान कक्षाओं और विधियों के साथ समाप्त होते हैं।

लेकिन मैं इसे साबित नहीं कर सकता। फिर भी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.