शायद यह सिर्फ मुझे है, यही कारण है कि मैं सवाल पूछ रहा हूं। सूचना विशेषज्ञ, पूछो मत पूछो, और एसआरपी अक्सर सर्वोत्तम प्रथाओं के रूप में एक साथ उल्लेख किया जाता है। लेकिन मुझे लगता है कि वे बाधाओं में हैं। , जानकारी विशेषज्ञजानकारी विशेषज्ञ नहीं हैं/बताएं एकल उत्तरदायित्व सिद्धांत के साथ बाधाओं पर मत पूछें?
कोड कि SRP के पक्ष में है लेकिन बताओ पूछो मत का उल्लंघन करती है:
Customer bob = ...;
// TransferObjectFactory has to use Customer's accessors to do its work,
// violates Tell Don't Ask
CustomerDTO dto = TransferObjectFactory.createFrom(bob);
कोड को बताएँ पूछो मत करो/जानकारी विशेषज्ञ के पक्ष में है लेकिन SRP का उल्लंघन करती है कि यहाँ मैं किस बारे में बात कर रहा हूँ है:
Customer bob = ...;
// Now Customer is doing more than just representing the domain concept of Customer,
// violates SRP
CustomerDTO dto = bob.toDTO();
यदि वे वास्तव में बाधाओं में हैं, तो यह मेरे ओसीडी का एक निष्ठा है। अन्यथा, कृपया मुझे इस बात पर भरें कि ये अभ्यास शांतिपूर्वक कैसे सह-अस्तित्व में हो सकते हैं। धन्यवाद।
संपादित करें: कोई चाहता है पदों की एक परिभाषा -
सूचना विशेषज्ञ: वस्तुओं डेटा संचालन के लिए आवश्यक आपरेशन
की मेजबानी करनी चाहिए कि बताओ पूछो मत करो: के लिए वस्तुओं मत पूछो काम करने के लिए डेटा; प्रत्येक वस्तु एक संक्षिप्त रूप से परिभाषित जिम्मेदारी
आपके द्वारा उपयोग की जा रही शर्तों की एक छोटी प्रस्तुति सहायक हो सकती है। – shoosh
संक्षिप्त उत्तर हाँ है ... लंबा यह है कि कभी-कभी लोग (अकादमिक) अपने सिर को अपने गधे तक फंस जाते हैं, वे भूल जाते हैं कि प्रोग्रामिंग अभी तक एक परिपूर्ण विज्ञान नहीं है, .. हमारे पास ऐसी भाषा नहीं है इन सभी सिद्धांतों को पूरा करने के लिए पर्याप्त साफ करें। सिद्धांत को तोड़ो जो इसे सबसे ज्यादा समझ में आता है। – Stimul8d
आपका दूसरा उदाहरण एसआरपी का उल्लंघन करता है, लेकिन वास्तव में टेल डॉट न पूछने का एक अच्छा उदाहरण नहीं है। – koenmetsu