मैं रॉबर्ट मार्टिन द्वारा " क्लीन कोड " पढ़ रहा हूँ उम्मीद है कि, एक बेहतर प्रोग्रामर बनें। हालांकि इसका कोई भी अब तक वास्तव में आधार नहीं है, लेकिन इससे मुझे लगता है कि जिस तरह से मैं एप्लिकेशन डिजाइन करता हूं और कोड लिखता हूं।
पुस्तक का एक हिस्सा है जिसे मैं न केवल सहमत हूं, बल्कि मेरे लिए कोई मतलब नहीं है, विशेष रूप से इंटरफेस नामकरण सम्मेलनों के संबंध में। यहाँ पुस्तक, सीधे पुस्तक से ली गई है। मैंने इस पहलू को बोल्ड किया है जो मुझे भ्रामक लगता है और इस पर स्पष्टीकरण चाहूंगा।
मैं इंटरफेस को अनसुना छोड़ना पसंद करता हूं। पूर्ववर्ती I, आज की विरासत वाले वार्डों में इतनी सामान्य, सबसे अच्छी और बहुत अधिक जानकारी में एक व्याकुलता है। मैं नहीं चाहता कि मेरे उपयोगकर्ता यह जान सकें कि मैं उन्हें एक इंटरफ़ेस सौंप रहा हूँ ।
शायद यह इसलिए है क्योंकि मैं केवल एक छात्र हूं, या शायद इसलिए कि मैंने कभी भी कोई पेशेवर या टीम आधारित प्रोग्रामिंग नहीं की है, लेकिन मैं चाहूंगा कि उपयोगकर्ता यह जान लें कि यह एक इंटरफ़ेस है। एक इंटरफ़ेस लागू करने और एक वर्ग का विस्तार करने के बीच एक बड़ा अंतर है।
इसलिए, मेरा सवाल यह है कि "हमें इस तथ्य को क्यों छिपाना चाहिए कि कोड का कुछ हिस्सा एक इंटरफ़ेस की अपेक्षा कर रहा है?"
संपादित करें
एक जवाब के जवाब में:
यदि आपका प्रकार एक इंटरफ़ेस है या एक वर्ग आपका व्यवसाय है, तो आपके कोड का उपयोग करने वाले किसी व्यक्ति का व्यवसाय नहीं। इसलिए आपको इस थ्रिड पार्टी कोड में अपने कोड का विवरण लीक नहीं करना चाहिए।
मुझे इस बात का विवरण "लीक" क्यों नहीं करना चाहिए कि क्या एक दिया गया प्रकार एक इंटरफ़ेस है या तृतीय-पक्ष कोड के लिए एक वर्ग है? क्या यह जानने के लिए मेरे कोड का उपयोग करना तीसरे पक्ष के डेवलपर के लिए महत्वपूर्ण नहीं है कि वे एक इंटरफ़ेस लागू करेंगे या एक वर्ग का विस्तार करेंगे? क्या अंतर केवल उतना ही महत्वपूर्ण नहीं है जितना कि मैं उन्हें अपने मन में बना रहा हूं?
to know whether they will be implementing an interface or extending a class
: हाँ, लेकिन आपके कोड के अधिकांश उपयोगकर्ता इसे कॉल करेंगे, इसे लागू नहीं करेंगे या इसका विस्तार नहीं करेंगे, और वे वास्तव में परवाह नहीं कर सकते कि यह कौन है।