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