6

बस शब्दों में कहें, क्या बहुवचन का उपयोग करके संग्रह और समग्र वस्तुओं का नाम देना एक अच्छा विचार है?क्या नाम संग्रह में बहुलता का उपयोग करना अच्छा अभ्यास है?

class PandaBears { 
    PandaBear[] bears; 

    class PandaBear { 
    } 
} 

मेरी चिंता यह है कि कक्षा के नाम काफी समान हैं। दूसरी तरफ, PandaBearList कार्यान्वयन का खुलासा करता है, लेकिन यह अधिक आसानी से भिन्न है।

+0

मुझे नहीं पता कि यह अच्छा अभ्यास है या नहीं। लेकिन मुझे बहुवचन का उपयोग करना पसंद नहीं है। मैं 'पांडाबियर कोलेक्शन 'का उपयोग करूंगा। – atoMerz

+0

आईएमओ, अगर मेरे पास कुछ विशेष विधियां हैं (जैसे विशिष्ट मानों के साथ कुछ तत्व लौटाना आदि) या मैं केवल एक विधियों के साथ एक सख्त एपीआई चाहता हूं जिसे मैं संग्रह के साथ उपयोग करने की अनुमति देता हूं, अन्यथा, मैं संग्रह, सूची का पुन: उपयोग करूंगा या सेट (जावा)। – Genzer

+1

मैं वैचारिक नाम पसंद करता हूं। आपकी बाहरी कक्षा की भूमिका क्या है? इसके उद्देश्य के बारे में सोचें और उचित नाम चुनें। PandaBearForest? PandaBearMom? PandaBearCage? PandaBearGroup? शायद आपको बाहरी वर्ग की आवश्यकता नहीं है। –

उत्तर

2

मैं PandaBearCollection पसंद करूंगा। एक वर्ग का नाम जो एक गणनीय संज्ञा है, ओओपी, "ऑब्जेक्ट" के मौलिक रूपक के साथ बेहतर होता है।

उदाहरण के लिए, निम्नलिखित दो कार्यों के हस्ताक्षर का वर्णन का प्रयास करें:

void func(PandaBearCollection collection1, PandaBearCollection collection2); 
void func(PandaBears pandaBears1, PandaBears pandaBears2); 

पहले एक स्वाभाविक रूप से होगा: "एक समारोह है कि पांडा भालू के दो संग्रह लेता है"।

दूसरा क्या होगा? "एक समारोह जो दो पांडा भालू" लेता है? नहीं, यह सिर्फ काम नहीं करता है।

+0

अच्छा बिंदु, मैंने सोचा कि बहुलता बेहतर पढ़ेगी, लेकिन कक्षाओं और वस्तुओं के बारे में बात करते समय यह भ्रमित है। –

1

मैं बहुलता से बचूंगा।

यदि आप प्रत्यय List शामिल नहीं करना चाहते हैं, तो आप हमेशा प्रत्यय Collection का उपयोग कर सकते हैं जो एक मानक सम्मेलन है और कार्यान्वयन विवरण प्रकट नहीं करता है। बेशक यह उस भाषा पर निर्भर करता है जिसका आप उपयोग कर रहे हैं।

एक सी #-विशिष्ट कार्य-आसपास भी है जिसे मैं उपयोग करना पसंद करता हूं यदि संरचना बहुत जटिल नहीं है। संबंधित संग्रह IEnumerable<T> के विस्तार विधियों के रूप में सभी विधियों को घोषित करके आप संग्रह कक्षा बनाने से बच सकते हैं। इसलिए, इस मामले में, आप IEnumerable<PandaBear> पर विस्तार विधियों की घोषणा कर सकते हैं, बशर्ते आपके संग्रह में अन्य निजी चर नहीं हैं।

1

मैं बहुलता का उपयोग करना पसंद करता हूं क्योंकि जैसा कि आप उल्लेख करते हैं, यह कार्यान्वयन को इंगित नहीं करता है, जो भविष्य में आसानी से बदल सकता है। नामकरण सम्मेलन पर एक और विचार यह है कि यदि आप ओआरएम का उपयोग कर रहे हैं और discussed here के रूप में अपने डेटाबेस स्कीमा का अनुवाद करते समय इसका किस प्रकार का सम्मेलन उपयोग करेगा। आपको शायद दोनों तरीकों से बहुत सारी सलाह मिल जाएगी। मुझे लगता है कि और अधिक महत्वपूर्ण बात यह है कि आप एक सम्मेलन चुनते हैं जो आपके और आपकी टीम के लिए काम करता है और आप इसके साथ चिपके रहते हैं।

संबंधित मुद्दे