2011-05-30 19 views
6

क्षमा करें अगर इससे पहले पूछा गया है, और यह कल्पना करना मुश्किल है कि यह नहीं है, लेकिन इसमें कोई स्पष्ट कीवर्ड एसोसिएशन नहीं है, इसलिए जांचना मुश्किल है।क्या 'गेट' विधि नाम पैरामीटर का नाम शामिल होना चाहिए?

अगर मैं GetByCode(string code) और GetByCodeAndResourceType(string code, string resourceType) की तरह मानक तरीकों के एक जोड़े के साथ एक सी # वर्ग है, मैं तो बस उनका नाम बदल एक ओवरलोड Get(...) होने के लिए चाहिए, क्योंकि वे पैरामीटर सूची से अलग पहचाना कर रहे हैं?

जाहिर है, ऐसे परिदृश्य हो सकते हैं जहां विभिन्न उद्देश्यों के लिए एक ही विधि हस्ताक्षर की आवश्यकता हो सकती है, लेकिन इसके अलावा मैं अलग-अलग विधि नामों की आवश्यकता को तब तक नहीं देख सकता जब तक इंटेलिजेंस के लिए टिप्पणियां हों।

मुझे यह जानने में दिलचस्पी है कि कोई भी व्यक्ति क्या सोचता है पेशेवर और विपक्ष।

उत्तर

6

यदि वे दोनों एक ही काम करते हैं (या एक ही मूल्य वापस करते हैं) लेकिन विभिन्न इनपुट स्वीकार करते हैं तो पैरामीटर को ओवरलोड करके इन्हें अलग करना बेहतर होगा। यदि वे क्या करते हैं या लौटते हैं तो कोई अंतर होता है तो मैं अलग-अलग नामों का उपयोग करता हूं।

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

3

हम Get के बजाय Find शब्द का उपयोग करते हैं और हां हम विधि नाम में पैरामीटर नाम का उपयोग करते हैं।

जैसा कि आप इंगित करते हैं, ऐसे मामले होंगे जब पैरामीटर प्रकार अद्वितीय हस्ताक्षर प्रदान नहीं करते हैं। यही कारण है कि हमने लंबे नामों का चयन किया क्योंकि यह सुसंगत है।

+1

+1 हाँ, स्थिरता महत्वपूर्ण है –

3

मुझे लगता है कि किसी को यह समझना चाहिए कि उसके हस्ताक्षर से कोई विधि क्या करती है। एक विधि हस्ताक्षर उसके नाम, इसके लौटने वाले प्रकार और इसके पैरामीटर द्वारा रचित है। तो नाम में इनमें से किसी भी घटक को दोहराएं (उदा। GetByName(string name), या List<string> GetNames*List*(..)) पूरी तरह से अनावश्यक है।

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