वर्गों के नामकरण: एकवचन या बहुवचन? [बन्द है]


58

कक्षाओं के नामों के लिए एकवचन और बहुवचन रूपों के बीच चयन करना मेरे लिए हमेशा कठिन होता है:

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

और समग्र नामों के लिए यह और भी कठिन है:

ऑर्डरकस्टमर रिपॉजिटरी बनाम ऑर्डरकस्टमर रिपॉजिटरी बनाम ऑर्डर्स कस्टमर रिपॉजिटरी

आप किस दृष्टिकोण को पसंद करते हैं और क्यों?


क्या क्लास में कई ग्राहकों के लिए भंडार होगा? अगर यह एक ग्राहक के लिए एक रिपॉजिटरी है ...
जेएफओ

2
@ जेफ़ ओ, रिपॉजिटरी में एक ही समय में गेटकेंटरबाय और गेटकॉस्टर विधि शामिल हो सकते हैं
साइबेरियाई

2
डेटा मॉडलिंग में, एक तालिका का नाम एकवचन होना चाहिए। यदि आपका एप्लिकेशन डोमेन कक्षाओं का उपयोग कर रहा है जो आपके डेटा मॉडल के लिए 1-1 से मेल खाता है तो नामकरण एकवचन रखने के लिए एक अच्छा विचार हो सकता है। बेशक 1-1 फैशन में कक्षाओं की मैपिंग एक OO एप्लिकेशन के लिए अपने ऑब्जेक्ट मॉडल को बनाने का सबसे अच्छा तरीका नहीं हो सकता है, लेकिन यह सवाल के बगल में है।
NoChance

जवाबों:


73

केवल एक चीज जो मुझे बहुवचन है वह है संग्रह।

foreach (var customer in customers)
{
    // do something with customer
}

आपके सभी उदाहरण व्यक्तिगत ऑब्जेक्ट हैं, इसलिए वे बहुवचन नहीं हैं। हां, नाम उन वस्तुओं को संदर्भित करते हैं जिनके कई उदाहरण हो सकते हैं, लेकिन आपको नाम में सभी जानना आवश्यक है ऑब्जेक्ट इकाई (यानी ग्राहक)।

तो आपके सभी उदाहरणों में, एकवचन सही रूप है। जीवन को बहुत आसान बना देता है।


2
मैं customerCollectionसंग्रह के लिए उपयोग करूँगा , लेकिन इसके बाकी हिस्सों के लिए मैं सहमत हूँ। यह डेटाबेस डिजाइन में सबसे अच्छा अभ्यास है और कोड में भी काफी अच्छा काम करता है।
Jan_V

12
मुझे यहां "संग्रह" जैसे शब्द पसंद नहीं हैं। अंग्रेजी में प्लुरल का उपयोग करके चीजों के संग्रह का संदर्भ देने का एक अच्छा तरीका है।
रोबोट

इसके बजाय Collectionकैसे Iterator?
जूलियन

@ जूलियन Iteratorकई वस्तुओं को रखने के लिए डेटा संरचना के बजाय किसी तरह की सह-दिनचर्या होगी, है ना?
विल्सन

64

एकवचन का प्रयोग करें। शिकंजा को चालू करने के उपकरण को "स्क्रू ड्राइवर" कहा जाता है न कि "स्क्रू ड्राइवर"।

हालांकि, अपनी विधि और संपत्ति के नाम को तदनुसार इंगित करें, यह इंगित करने के लिए कि क्या एक मूल्य या उनमें से एक संग्रह वापस आ जाएगा।


7

निश्चित रूप से एकवचन। आप एक वस्तु नहीं बनाते हैं People, आप Personवस्तुओं का एक संग्रह बनाते हैं। केवल समय मैं बहुवचन का प्रयोग करेंगे स्थिर कक्षाएं, यानी के लिए किया जाएगा SupportServices, StringUtils, आदि हालांकि इस मामले में, वर्ग किसी और चीज से एक नाम स्थान के रूप में अधिक कार्य करता है।


1
और सोचने के लिए, यह सब समय मैं लोगों के संग्रह का उपयोग कर रहा हूं!
जॉर्डन

2
सूची <व्यक्ति> लोग ... मुझे ठीक लगता है, @ जोर्डन।
स्टीवनवी

1

याद रखें, एक कक्षा एक वस्तु के लिए एक टेम्पलेट है। इसलिए उस वस्तु के बारे में सोचें जिसका आप उल्लेख कर रहे हैं।

अक्सर यह एक विलक्षण इकाई है, खासकर जब यह एक ओआरएम इकाई है। कभी-कभी यह एक संग्रह हो सकता है।

मेरा मानना ​​है कि उत्तर संदर्भ के लिए विशिष्ट है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.