मुझे लगता है कि डीडीडी में नामकरण करने के लगभग दो दृष्टिकोण हैं:
1) स्टीरियोटाइप आधारित। यह वह जगह है जहां आप इसके नाम पर कक्षा स्टीरियोटाइप शामिल करते हैं। उदाहरण के लिए:
QuestionsRepository, TaxCalculatingService etc
2) डोमेन आधारित। इस दृष्टिकोण में आप केवल डोमेन भाषा का उपयोग करते हैं और कक्षा के नामों में किसी भी रूढ़िवाद को छोड़ देते हैं। उदाहरण के लिए:
Questions (or AllQuestions), TaxCalculator etc.
कार्यान्वयन कक्षाएं SqlQuestions
या InMemoryQuestions
की तरह नामित किया जाएगा।
मैंने दोनों की कोशिश की लेकिन अब मैं दूसरा विकल्प पसंद करता हूं क्योंकि ऐसा लगता है कि यह डीडीडी मानसिकता के साथ अधिक गठबंधन है। यह अधिक पठनीय लगता है और बेहतर सिग्नल-टू-शोर अनुपात है। बाद फिल Calçado से खजाने पर एक great article से एक उद्धरण है:
वस्तुओं की एक सूची के रूप में एक भंडार की अवधारणा को समझना बहुत कठिन नहीं है लेकिन यह बहुत आम है उन वर्गों तरीके हैं कि अंत करने के लिए सूचियों से संबंधित नहीं है।
एक सर्वव्यापी भाषा और संबंधित पैटर्न को अपनाने में कई टीमों को प्रशिक्षित करने के बाद, मुझे पता चला है कि लोगों को याद रखने का सबसे अच्छा तरीका है कि रेपॉजिटरीज डीएओ जैसी कक्षाएं नहीं हैं, आप उन्हें कैसे नाम देते हैं।
साल पहले रॉड्रिगो योशिमा ने मुझे रेपॉजिटरीज़ नामकरण करते समय अपने सम्मेलन के बारे में बताया। इसके बजाय अधिक आम नामकरण शैली के नीचे प्रदर्शित:
class OrderRepository {
List<Order> getOrdersFor(Account a){...}
}
वह इस को बढ़ावा देता है:
class AllOrders {
List<Order> belongingTo(Account a){...}
}
यह एक छोटा सा परिवर्तन की तरह दिखता है, लेकिन यह एक बहुत मदद करता है ...
पूरा लेख पढ़ने और बुकमार्क करने के लायक है।
मुझे पता है कि यह मामूली जानकारी हो सकती है लेकिन क्या कार्यान्वयन वर्ग में प्रत्यय या उपसर्ग होना चाहिए? SQLAllQuestions या AllQuestionsSQL? आप क्या करना चाहते हैं? – LuckyLuke
मैं व्यक्तिगत रूप से SqlAllQuestions का उपयोग करता हूं, लेकिन मुझे AllQuestionsSql का उपयोग न करने का कोई कारण नहीं दिखता है, यह भी बेहतर हो सकता है। जैसा कि आप कह यह वास्तव में है क्योंकि इस नाम ही अपने आवेदन के लिए एक 'संरचना रूट' भाग में इस्तेमाल किया जाएगा और आप इसे एक बहुत नहीं देख पा रहे हैं कोई फर्क नहीं पड़ता (http://blog.ploeh.dk/2011/07/28/ CompositionRoot.aspx) – Dmitry
एक और बात। मैंने आपका लिंक पढ़ा और यह बहुत अच्छा था लेकिन जब आप AllQuestions इंटरफ़ेस रखते हैं तो आप क्या करते हैं और आप सभी प्रश्नों को सूचीबद्ध करना चाहते हैं? AllQuestions.everything()? क्या सीआरयूडी करते समय कोई सम्मेलन या कुछ है? – LuckyLuke