質問

多くのプログラミング言語とライブラリを使用することで、コレクション内の要素の総数に使用されるさまざまな用語に気付きました。

最も一般的なのは、 length count 、および size のようです。

eg。

array.length
vector.size()
collection.count

使用する優先語はありますか? コレクションのタイプに依存しますか?すなわち。可変/不変

メソッドではなくプロパティであるという設定がありますか?

役に立ちましたか?

解決

Length()は、連続した要素を参照する傾向があります。たとえば、文字列には長さがあります。

Count()は、より緩やかなコレクションの要素の数を参照する傾向があります。

Size()はコレクションのサイズを参照する傾向があり、多くの場合、これはベクトル(または文字列)のような場合の長さと異なる場合があり、文字列に10文字ある場合がありますが、ストレージは20に予約されています。また、要素の数を参照することもあります-ソース/ドキュメントを確認してください。

Capacity()-コレクション内の有効な要素の数ではなく、コレクション内の割り当てられたスペースを具体的に参照するために使用されます。タイプに両方の「容量」がある場合および「サイズ」定義後、「サイズ」通常、実際の要素の数を指します。

主なポイントは人間の言語とイディオムにあると思います、文字列のサイズはそれほど明白ではないようですが、セットの長さは同じものを参照するために使用されるかもしれませんが(データのコレクション内の要素の数)。

他のヒント

FWIW(そして、それはほとんどゼロに近い)、コレクション内の要素/アイテムの数をかなり明確に返すことを示すように見えるので、 'Count'を好みます。

「長さ」または「サイズ」という用語に直面したとき、私はしばしば、いまいましいものが私に何個の要素が含まれているかを教えてくれるのかどうか、しばらくの間疑問に思うようになります。コレクションまたはコレクションが消費しているバイト数。これは、配列や文字列のように偶発的であることが意図されているコレクションに特に当てはまります。

しかし、Java、BCL / .Net、またはC / C ++標準フレームワーク/ライブラリで使用される命名規則の責任者は誰も私に尋ねる気にならなかったので、あなたはすべて彼らが思いついたものにこだわっています。

私よりも賢く、Bjarneと名付けられたなら、あなた方全員が悲惨さを免れるかもしれません...

もちろん、現実の世界に戻って、使用している言語/プラットフォームで使用されている命名規則(たとえば、C ++の size())に固執するようにしてください。これが Array.Length のジレンマに役立つようではありません。

用語は多少互換性がありますが、状況によっては別の用語を好む場合もあります。通常、この要素の長さ/サイズ/数を他の人に言葉でどのように説明しますか?について考えると、最適な使用法を得ることができます。

length()は、要素に長さがあることを意味します。文字列には長さがあります。 「文字列の長さは20文字」と言いますよね?そのため、長さがあります。

size()は、要素にサイズがあることを意味します。例えば。ファイルにはサイズがあります。 「このファイルのサイズは2 MB」と言いますよね?そのため、サイズがあります。

とは言っても、文字列にはサイズを指定することもできますが、ここでは何か他のものを期待しています。例えば。 UTF-16文字列の長さは100文字ですが、すべての文字が2バイトで構成されているため、サイズは200になると予想されます。

count()は非常に珍しいです。 Objective-Cは、配列内の要素数にcountを使用します。配列の長さ(Javaの場合)、サイズ(他のほとんどの言語の場合)、またはカウントのどちらを持っているかを議論するかもしれません。ただし、サイズは再びバイト単位のサイズ(配列アイテムが32ビット整数の場合、各アイテムは4バイト)と長さです...「配列の長さは20要素」とは言いません。私に。 「配列には20個の要素があります」と言います。 countがそれを非常にうまく表現しているかどうかはわかりませんが、countはここで elementCount()の短い形式であり、配列に対してlength()またはsize()よりもはるかに理にかなっていると思います。

プログラミング言語で独自のオブジェクト/要素を作成する場合、プログラマはその用語を使用して目的のプロパティにアクセスするため、他の同様の要素が使用するのが最善です。

カウントコレクション内のアイテムの数を探している場合に使用する最も明白な用語はカウントだと思います。これは、特定の言語にまだ特別な愛着を抱いていない新しいプログラマにとっても明らかです。

そしてそれは、プロパティである必要があります。それは、コレクションの説明(プロパティ)です。メソッドは、アイテムの数を取得するためにコレクションに対して何かをする必要があることを意味し、それは単に直感的ではないように思えます。

うーん...サイズは使いません。これは、バイト単位のサイズと混同される可能性があるためです。 長さ-配列が後続のバイトのメモリを使用することになっている限り、配列には意味があります。 でも...長さ...何で? カウントは明確です。要素の数。カウントを使用します。

プロパティ/メソッドについては、プロパティを使用して高速にマークし、メソッドを使用して低速にマークします。

そして、最も重要なこと-私はあなたが使用している言語/ライブラリの標準に固執します。

@gbjbaanbの回答への追加...

"プロパティ"の場合値へのパブリックアクセスを意味します。「メソッド」は、単にカプセル化を提供し、実装を隠すために推奨されます。

要素を count する方法や、 count を維持する方法について気が変わるかもしれません。プロパティである場合、スタックしています。メソッドを介してアクセスする場合、コレクションのユーザーに影響を与えることなく、基になる実装を変更できます。

Elixirには、実際には言語のタイプ全体に関連付けられた明確な命名スキームがあります。

  

“カウント”データ構造内の要素の数、Elixir   また、単純なルールに従います。関数の名前は size です。   操作が一定時間内にある(つまり、値が事前に計算されている)または    length 操作が線形の場合(つまり、長さの計算は   入力が大きくなるにつれて遅くなります。)

これは、「foreach」かどうかを尋ねるようなものです。 「for each」よりも優れています。言語/フレームワークに依存します。

使用している特定の言語クラスに依存すると言います。たとえば、c#では、配列を使用している場合は Property の長さを持ち、IEnumerableから継承するものがある場合は Method Count()の拡張子を持ちますが、高速ではありません。 ICollectionから継承した場合、プロパティカウントがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top