8

を参照するときに、どの単語を使用するかを考えていることがありますIEnumerable<Foo>。読んでいるときに一貫した命名が見られないと思います。

IEnumerable<Foo>:タイプ名です。文中で考えたり使用したりするときは役に立ちません。

コレクション:有効ですが、どこでも使用されているわけではありません。System.Collections名前空間がありますが。

シーケンス:それも有効であり、おそらくそれをより適切に定義します。

列挙子またはイテレータ:操作を強調し、めったに使用されません。

最も適切なものは何ですか?あなたはそれをあなたのコードで何を読みますか?

4

5 に答える 5

7

AnIEnumerable<Foo>はイテレータ/列挙子ではありません-それはそれを反復するデバイスの別の概念です。

コレクションとは、通常、追加/削除などの操作を可能にする特定のデバイスを指します。ここでは適用されませんが、この用語は不合理ではありません。

個人的には、ディスカッションで「シーケンス」を使用する傾向がありますが、コード内で名前を付けるために使用することはありません。シーケンスが表すもの、つまり「orders」、「uniqueUsers」などを使用します。一般的なメソッド、「アイテム」、「値」などの場合。

于 2011-09-02T06:50:41.793 に答える
6

私は間違いなくシーケンスに傾いています。私の考えでは、コレクションは有限であり、IEnumerable<Foo>その場で生成される一連の値を非常によく表す可能性があるため、無限の一連の値を表す可能性があります。

于 2011-09-02T06:49:41.477 に答える
2

書面で「FooのIEnumerable」と呼ぶ前例があります。たとえば、このMSDNページは「XElementのIEnumerable」を参照しています。

口頭で私は「FooのIEnumerable」または「FooのEnumerable」と言います。

于 2011-09-02T10:10:37.527 に答える
1

「IEnumerable<Foo>」タイプの変数、パラメーター、またはフィールドを説明する最も明確で明確な方法は、「IEnumerable <foo>」、「IEnumerable(Of foo)」、または「IEnumerable of foo」。VBプログラマーである私は、特にHTMLマークアップと間違えられる可能性のある句読点を使用しないため、中間の構文を好みます。話す場合、後者の形式が最も自然な発音になります(最初の「I」はそれ自体の音節を表します)。ただし、ネストされたジェネリックを含む場合を除き、正確なネストを示すために他の発音の手がかりが必要になる場合があります。

ジェネリックまたは非ジェネリック(*)IEnumerableインターフェイスを実装するクラスの一部はコレクションですが、そうでないものもあります。一部はイテレータです。一部ではありません。したがって、「コレクション」および「イテレータ」という用語は、特定のIEnumerableが実際にはコレクションまたはイテレータであることがわかっていない限り、実際には適切ではありません。「イテレータ」という用語には、「シーケンス」という用語と共通する追加の問題があります。すべてのイテレータまたはシーケンスがIEnumerableを実装しているわけではありません。IEnumeratorを実装するものもあれば、GetEnumeratorメソッドを実装するものの、IEnumerableを実装しないものもあります(たとえば、「foreach」を許可したいが、IEnumerableによって示されるすべての動作を約束したくないため)。専門用語を避けたい場合は、「再利用可能なシーケンス」という用語が適している場合があります。それは完全に明白ではありません、

(*)以降の「IEnumerable」という用語は、IEnumerableとIEnumerable<T>を同じ意味で指します。同様に「IEnumerator」。

于 2011-09-02T14:37:05.153 に答える
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.

私は内部の発声として「いくつか」を使用していると思います。おそらく、複数形の単語ならどれでも機能します。バッチ、チャンク、バンチ、フロック、プレトラなど。

于 2011-09-02T14:43:02.897 に答える