नामों के अर्थ बताने का अवसर है। आप उस अवसर को इम्प्लांट के साथ क्यों फेंक देंगे?
सबसे पहले, यदि आपके पास केवल एक कार्यान्वयन होगा, तो इंटरफ़ेस के साथ दूर करें। यह इस नामकरण समस्या बनाता है और कुछ भी नहीं जोड़ता है। इससे भी बदतर, यह एपीआई में असंगत विधि हस्ताक्षर के साथ परेशानी पैदा कर सकता है यदि आप और अन्य सभी डेवलपर्स हमेशा केवल इंटरफ़ेस का उपयोग करने के लिए सावधान नहीं हैं।
कि देखते हुए, हम हर इंटरफ़ेस है कि यह मान सकते हैं है या हो सकता है दो या अधिक कार्यान्वयन।
यदि आपके पास अभी केवल एक ही है, और आप नहीं जानते कि किस तरह से दूसरा अलग हो सकता है, तो डिफ़ॉल्ट एक अच्छी शुरुआत है।
यदि आपके पास अभी दो हैं, तो प्रत्येक को उसके उद्देश्य के अनुसार नाम दें।
उदाहरण: हाल ही में, हमारे पास एक ठोस वर्ग संदर्भ था (एक डेटाबेस के संदर्भ में)। यह महसूस किया गया था कि हमें एक ऐसे संदर्भ का प्रतिनिधित्व करने में सक्षम होना चाहिए जो ऑफ़लाइन था, इसलिए कॉनटेक्स्ट नाम का उपयोग एक नए इंटरफ़ेस (पुराने एपीआई के लिए अनुकूलता बनाए रखने के लिए) के लिए किया गया था, और एक नया कार्यान्वयन बनाया गया था, ऑफलाइनकोटेक्स्ट । लेकिन लगता है कि मूल का नाम बदल दिया गया था? यह सही है, ContextImpl (yikes)।
इस मामले में, DefaultContext शायद ठीक होगा, और लोग इसे प्राप्त करेंगे, लेकिन यह उतना वर्णनात्मक नहीं है जितना कि यह हो सकता है। आखिरकार, अगर यह ऑफ़लाइन नहीं है , तो यह क्या है? इसलिए हम साथ गए: OnlineContext ।
विशेष मामला: इंटरफेस पर "I" उपसर्ग का उपयोग करना
इंटरफेस पर I उपसर्ग का उपयोग करके सुझाए गए अन्य उत्तरों में से एक । अधिमानतः, आपको ऐसा करने की आवश्यकता नहीं है ।
हालाँकि, यदि आपको कस्टम कार्यान्वयन के लिए इंटरफ़ेस की आवश्यकता है, लेकिन आपके पास एक प्राथमिक कंक्रीट कार्यान्वयन भी है जिसका उपयोग अक्सर किया जाएगा, और इसके लिए मूल नाम अकेले इंटरफ़ेस को देने के लिए बहुत सरल है, तो आप जोड़ने पर विचार कर सकते हैं "मैं" इंटरफ़ेस के लिए (हालांकि, यह पूरी तरह से ठीक है अगर यह अभी भी आपके और आपकी टीम के लिए सही नहीं बैठता है)।
उदाहरण: कई वस्तुएं "EventDispatcher" हो सकती हैं। एपीआई के लिए, यह एक इंटरफ़ेस के अनुरूप होना चाहिए। लेकिन, आप प्रतिनिधिमंडल के लिए एक बुनियादी घटना प्रेषण प्रदान करना चाहते हैं । DefaultEventDispatcher ठीक होगा, लेकिन यह थोड़ा लंबा है, और यदि आप अक्सर इसका नाम देख रहे हैं, तो आप ठोस वर्ग के लिए आधार नाम EventDispatcher का उपयोग करना पसंद कर सकते हैं , और कस्टम कार्यान्वयन के लिए IEventDispatcher लागू कर सकते हैं:
/* Option 1, traditional verbose naming: */
interface EventDispatcher { /* interface for all event dispatchers */ }
class DefaultEventDispatcher implements EventDispatcher {
/* default event dispatcher */
}
/* Option 2, "I" abbreviation because "EventDispatcher" will be a common default: */
interface IEventDispatcher { /* interface for all event dispatchers */ }
class EventDispatcher implements IEventDispatcher {
/* default event dispatcher. */
}