2011-09-02 14 views
7

कभी-कभी मुझे लगता है कि IEnumerable<Foo> का जिक्र करते समय मुझे किस शब्द का उपयोग करना है। मुझे नहीं लगता कि पढ़ने के दौरान मैं लगातार नामकरण देखता हूं।आप IENumerable <Foo> पर क्या कहते हैं?

IEnumerable<Foo>: यह एक प्रकार का नाम है। एक वाक्य में सोच या उपयोग करते समय यह सहायक नहीं है।

संग्रह: यह मान्य है लेकिन हर जगह उपयोग नहीं किया जाता है। हालांकि हमारे पास सिस्टम है। चयन नामस्थान।

अनुक्रम: यह भी वैध है और शायद इसे बेहतर परिभाषित करता है।

गणनाकार या इटरेटर: वे आपरेशन, शायद ही कभी इस्तेमाल पर जोर देना।

सबसे उपयुक्त क्या होगा? आप इसे अपने कोड में क्या पढ़ते हैं?

+0

मैं ज्यादातर ** संग्रह ** के रूप में referring कर रहा हूँ :) :) – Samich

+0

प्रति ओपी के अनुरोध सीडब्ल्यू चिह्नित –

+0

मैं आमतौर पर Foo :-) तो एक अनुक्रम का उल्लेख करता हूं तो एक अनुक्रम । – xanatos

उत्तर

7

एक IEnumerable<Foo>नहीं पुनरावर्तक/प्रगणक है - कि डिवाइस के लिए एक अलग अवधारणा है कि दोहराता यह है।

संग्रह आम तौर पर एक विशिष्ट डिवाइस को संदर्भित करता है जैसे कि जोड़ने/निकालने जैसे संचालन; जो यहां लागू नहीं होता है, लेकिन यह शब्द अनुचित नहीं है।

व्यक्तिगत तौर पर मैं चर्चा में "अनुक्रम" का उपयोग करते हैं, लेकिन मैं का उपयोग नहीं करते कि कोड में चीजों के नामकरण के लिए - मैं सिर्फ बात अनुक्रम प्रतिनिधित्व करता है, यानी "आदेश", "uniqueUsers" का उपयोग करेंगे , आदि - या सामान्य तरीकों के मामले में, "आइटम", "मान", आदि

+0

यह भी देखें [IENumerable और IENumerator के बारे में प्रश्न] (http://stackoverflow.com/questions/4548464/question-regarding-ienumerable-and-ienumerator/4550191#4550191)। – Brian

6

मैं निश्चित रूप से अनुक्रम की तरफ झुकता हूं। मेरे दिमाग में, संग्रह परिमित है, और IEnumerable<Foo> मक्खी पर उत्पादित मूल्यों के अनुक्रम का बहुत अच्छा प्रतिनिधित्व कर सकता है, और इसलिए यह अनंत अनुक्रम मानों का प्रतिनिधित्व कर सकता है।

+0

अनुक्रम खराब नहीं है, लेकिन सभी अनुक्रम IENumerable के किसी भी रूप को लागू नहीं करते हैं। "पुन: प्रयोज्य अनुक्रम" मेरा पसंदीदा अंग्रेजी-आश वर्णन होगा; कुछ पुन: प्रयोज्य अनुक्रम IENumerable को लागू नहीं करते हैं, लेकिन चूंकि अधिकांश अनुक्रम जो IENumerable को लागू नहीं करते हैं, वे पुन: प्रयोज्य नहीं हैं, मुझे लगता है कि "पुन: प्रयोज्य" एक उपयोगी विशेषण है। – supercat

2

लिखित रूप में "फू का एक अनुमानित" के रूप में संदर्भित करने के लिए एक उदाहरण है। उदाहरण के लिए, this MSDN page "XElement का एक IENumerable" को संदर्भित करता है।

शब्दशः मैं "फू का एक आईनेमेरेबल" या "फू का अनुमानित" कहूंगा।

1

अब तक, सबसे स्पष्ट स्पष्ट रास्ता "(foo का) IEnumerable" एक चर, पैरामीटर या प्रकार के क्षेत्र "IEnumerable < फू >" यह एक "IEnumerable <foo>" कॉल करने के लिए है, का वर्णन करने के या "foo का IENumerable"। एक वीबी प्रोग्रामर होने के नाते, मैं मध्य वाक्यविन्यास पसंद करता हूं, खासकर जब से यह विराम चिह्न का उपयोग नहीं करता है जिसे HTML मार्कअप के लिए गलत किया जा सकता है; बोलने में, उत्तरार्द्ध रूप सबसे प्राकृतिक उच्चारण होगा (आरंभिक "मैं" अपने स्वयं के अक्षर का प्रतिनिधित्व करता है) नेस्टेड जेनेरिक से जुड़े मामलों को छोड़कर, जब अन्य उच्चारण संकेतों को सटीक घोंसले को इंगित करने की आवश्यकता हो सकती है।

जेनेरिक या गैर-जेनेरिक (*) IENumerable इंटरफेस को लागू करने वाले कुछ वर्ग संग्रह हैं, लेकिन कुछ नहीं हैं। कुछ इटरेटर हैं; कुछ नहीं शब्द "संग्रह" और "पुनरावर्तक" इस प्रकार वास्तव में उपयुक्त नहीं हैं जब तक कि कोई नहीं जानता कि एक विशेष IENumerable वास्तव में एक संग्रह या पुनरावर्तक होगा।"इटेटर" शब्द में एक अतिरिक्त समस्या है, जिसे "अनुक्रम" शब्द द्वारा साझा किया गया है: सभी इटरेटर्स या अनुक्रम INumerable लागू नहीं करते हैं; कुछ IENumerator को लागू करते हैं, और कुछ GetEnumerator विधि को लागू करते हैं लेकिन IENumerable को लागू नहीं करते हैं (उदा। क्योंकि वे "foreach" को अनुमति देना चाहते हैं लेकिन IENumerable द्वारा निहित सभी व्यवहारों का वादा नहीं करना चाहते हैं)। अगर कोई शब्दकोष से बचने की इच्छा रखता है, तो शब्द "पुन: प्रयोज्य अनुक्रम" एक अच्छा हो सकता है। यह काफी स्पष्ट नहीं है, क्योंकि यह संभावित रूप से उन कक्षाओं को संदर्भित कर सकता है जिनके पास GetEnumerator विधि है लेकिन IENumerable, या संभवतः IENumerator ऑब्जेक्ट्स को लागू नहीं करते हैं जिनके रीसेट विधि वास्तव में गणना को रीसेट करता है, लेकिन इसमें एक बार उपयोग करने वाले इटरेटर्स को शामिल नहीं किया जाता है।

(*) यहां से "आईनेमेरेबल" शब्द का अर्थ IENumerable और IEnumerable < टी > एक दूसरे के रूप में होगा। इसी प्रकार "आईन्यूमेरेटर"।

0

इसे वाक्य (कोड) में उपयोग करें।

IEnumerable<Foo> myFoos = GetFoos(); 
    //internal vocalization: get some Foos, assign them to myFoos 

मुझे संदेह है कि अधिकांश प्रोग्रामर आंतरिक रूप से एक परिवर्तनीय घोषणा/असाइनमेंट में प्रकार को मुखर नहीं करते हैं।

public IEnumerable<Foo> ProcessFoos(IEnumerable<Foo> source) 
    //internal vocalization: The method requires some foos and returns some foos. 

मुझे लगता है कि मैं अपने आंतरिक vocalization के रूप में "कुछ" का उपयोग करता हूं। शायद कोई बहुवचन शब्द काम करेगा। बैच, खंड, गुच्छा, झुंड, plethora, आदि

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