2011-09-02 73 views
7

我有时会发现自己在提及IEnumerable<Foo>时想到要使用什么单词。我不认为在阅读时我会看到一致的命名。你叫什么IEnumerable <Foo>?

IEnumerable<Foo>:这是一个类型名称。思考或在句子中使用时没有帮助。

收藏:这是有效的,但不是到处被使用。虽然我们有System.Collections命名空间。

序列:这是太有效,可能更好定义。

枚举器迭代器:他们强调操作,很少使用。

什么是最合适的?你在代码中读到了什么?

+0

我主要是指**集合** :) – Samich

+0

标记CW每个OP的请求 –

+0

我通常指的是一个Enumerable of Foo :-)所以一个序列。 – xanatos

回答

7

一个IEnumerable<Foo>迭代器/枚举 - 也就是所述设备的独立的概念,迭代它。

A 集合通常是指允许诸如添加/去除等操作的特定设备;这在这里不适用,但这个术语不是不合理的。我个人倾向于在讨论中使用“序列”,但我没有用它来命名代码中的东西 - 我只是使用序列代表的东西,即“orders”,“uniqueUsers”等 - 或者在通用方法的情况下,“项目”,“价值观”等

+0

另请参见[关于IEnumerable和IEnumerator的问题](http://stackoverflow.com/questions/4548464/question-regarding-ienumerable-and-ienumerator/4550191#4550191)。 – Brian

6

我肯定对序列倾斜。在我看来,一个收集是有限的,一个IEnumerable<Foo>很可能代表了在飞行中产生的值的序列,因此它可能代表值的无限序列

+0

序列不错,但并非所有序列都实现了任何形式的IEnumerable。 “可重复使用的序列”将是我的首选英文 - ish描述;一些可重复使用的序列没有实现IEnumerable实现,但由于大多数没有实现IEnumerable的序列是不可重用的,我认为“可重用”是一个有用的形容词。 – supercat

2

有用于参照它写为“富的IEnumerable”的先例。例如,this MSDN page引用“XElement的IEnumerable”。

Verbally我会说“一个IEnumerable of Foo”或者“一个Enumerable of Foo”。

1

到目前为止,最清晰和最明确的方式来描述“(中富)的IEnumerable”的变量,参数,或类型的字段“的IEnumerable <富>”是称之为一个“的IEnumerable <FOO>”,或者“IEnumerable of foo”。作为一名VB程序员,我更喜欢中间语法,尤其是因为它不使用可能被误认为是HTML标记的标点符号;在说话时,除了涉及嵌套泛型的情况外,后一种形式将是最自然的发音(最初的“I”代表它自己的音节),当需要其他发音提示来指示精确的嵌套时。

其中一些实现通用或者非通用(*)的IEnumerable接口的集合类的,但有些不是。有些是迭代器;有些不是。因此,除非知道特定的IEnumerable实际上是一个集合或迭代器,否则术语“集合”和“迭代器”是不适合的。术语“迭代器”有一个额外的问题,由术语“序列”共享:并非所有的迭代器或序列都实现IEnumerable;有些实现IEnumerator,有些实现GetEnumerator方法,但不实现IEnumerable(例如,因为他们希望允许“foreach”,但不希望承诺IEnumerable暗示的所有行为)。如果有人希望避免行话,那么术语“可重复使用的序列”可能是好的。它并不是很明确,因为它可能会引用具有GetEnumerator方法的类,但不会实现IEnumerable,或者可能引用其Reset方法实际重置枚举的IEnumerator对象,但不包括一次性迭代器。 (*)从这里开始,术语“IEnumerable”将互换地引用IEnumerable和IEnumerable <T>。同样“IEnumerator”。

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. 

我想我使用“一些”作为我的内部发声。可能任何复数形式的词都有效。批量,大块,束,群,过度等

相关问题