Frage

Von einer Reihe von Programmiersprachen und Bibliotheken Ich habe verschiedene Begriffe bemerkt für die Gesamtzahl von Elementen in einer Sammlung verwendet.

Die am häufigsten zu sein scheinen length, count und size.

zB.

array.length
vector.size()
collection.count

Gibt es einen bevorzugten Begriff verwendet werden? Hängt es ab, welche Art von Sammlung ist es? dh. mutable / unveränderlich

Gibt es eine Präferenz für die es eine Eigenschaft anstelle eines Verfahrens zu sein?

War es hilfreich?

Lösung

Length() neigt dazu, zusammenhängende Elemente Bezug zu nehmen - eine Kette hat eine Länge zum Beispiel.

Count() neigt dazu, die Anzahl von Elementen in einer loseren Sammlung zu verweisen.

Size() neigt dazu, die Größe der Sammlung zu finden, oft diese von der Länge in Fällen wie Vektoren unterschiedlich sein kann (oder Strings), gibt in einem String 10 Zeichen lang sein kann, sondern Speicher wird für 20 reserviert Es kann auch beziehen sich auf die Anzahl der Elemente -. überprüfen Quelle / Dokumentation

Capacity() - verwendet, um speziell auf zugewiesenen Platz in der Sammlung zu verweisen und nicht die Anzahl der gültigen Elemente. Wenn Typ beide „Kapazität“ und „Größe“ definiert hat dann „Größe“ in der Regel bezieht sich auf die Anzahl der tatsächlichen Elemente.

Ich denke, der wichtigste Punkt ist, bis auf die menschliche Sprache und Idiome, die Größe einer Zeichenfolge nicht sehr offensichtlich scheint, während die Länge eines Satzes ebenso verwirrend ist, obwohl sie verwendet werden könnten, um die gleiche Sache zu beziehen ( Anzahl der Elemente) in einer Sammlung von Daten.

Andere Tipps

FWIW (und das ist verschwindend fast nichts), I ‚Count‘ bevorzugen, weil es scheint darauf hinzudeuten, dass es geht um die Anzahl der Elemente / Elemente in der Sammlung zurück ziemlich unzweideutig.

Wenn Sie mit den Begriffen ‚Länge‘ oder ‚Größe‘ konfrontiert fragt ich mich für einen Moment oft links (oder sogar neu zu lesen Dokumentation gezwungen zu werden), ob das verdammte Ding, mir sagen wird, wie viele Elemente in der colection oder wie viele Bytes die Sammlung raubend ist. Dies gilt insbesondere für Sammlungen, die dazu bestimmt sind, contingous wie Arrays oder Strings zu sein.

Aber niemand, der für die Namenskonventionen verantwortlich war von der Java verwendet, BCL / .NET oder C / C ++ Standard-Frameworks / Bibliotheken störte mich zu fragen, so dass Sie alle stecken mit dem, was sie kam mit.

Wenn ich nur war viel klüger als ich und war Bjarne genannt, die alle von euch vielleicht das Elend verschont ...

Natürlich wieder in der realen Welt, sollten Sie versuchen, mit zu halten, was auch immer Namenskonvention durch die Sprache / Plattform verwendet wird, die Sie verwenden (z. B. size() in C ++). Nicht, dass dies scheint, dass Sie mit Ihrem Array.Length Dilemma zu helfen.

Die Begriffe sind etwas austauschbar, obwohl in manchen Situationen würde ich einen über die andere vorziehen. Normalerweise können Sie die beste Nutzung erhalten, wenn Sie darüber nachdenken, Wie würden Sie die Länge / Größe / Zählung dieses Elements verbal auf eine andere Person? .

length() bedeutet, dass das Element eine Länge hat. Ein String eine Länge. Sie sagen, „eine Zeichenkette 20 Zeichen lang ist“, nicht wahr? So hat sie eine Länge.

size() bedeutet, dass das Element eine Größe hat. Z.B. eine Datei hat eine Größe. Sie sagen: „Diese Datei mit einer Größe von 2 MB hat“, nicht wahr? So hat es eine Größe aus.

sagte, kann ein String auch eine Größe haben, aber ich würde hier etwas anderes erwarten. Z.B. ein UTF-16-String mit einer Länge von 100 Zeichen hat, aber wie jedes Zeichen aus zwei Bytes besteht, würde ich erwarten, Größe 200 sein.

count() ist sehr ungewöhnlich. Objective-C verwendet Zählung für die Anzahl der Elemente in einem Array. Man könnte argumentieren, wenn ein Array mit einer Länge (wie in Java), eine Größe hat (wie in den meisten anderen Sprachen) oder eine Zählung hat. Allerdings Größe wieder könnte die Größe in Byte sein (wenn die Array-Elemente 32-Bit-int sind, jedes Element ist 4 Byte) und Länge ... Ich würde nicht sagen, „ist ein Array 20 Elemente lang“, das klingt ziemlich seltsam an mich. Ich würde sagen, „ein Array hat 20 Elemente“. Ich bin mir nicht sicher, ob diese Zählung drückt sehr gut, aber ich denke, Zahl ist hier eine Kurzform für elementCount() und wieder macht viel mehr Sinn für einen Array als die Länge () oder Größe ().

Wenn Sie eigene Objekte / Elemente in einer Programmiersprache zu erstellen, ist es am besten zu verwenden, was andere ähnliche Elemente zu verwenden, da Programmierer verwendet verwenden diesen Begriff die gewünschte Eigenschaft für den Zugriff.

Count Ich denke, ist der offensichtlichste Ausdruck zu verwenden, wenn Sie für die Anzahl der Elemente in einer Sammlung suchen. Das sollte auch für neue Programmierer offensichtlich sein, die nicht besonders noch an eine bestimmte Sprache gebunden werden.

Und es sollte eine Eigenschaft sein, wie das ist, was es ist: eine Beschreibung (auch bekannt als Eigenschaft) der Sammlung. Ein Verfahren würde bedeuten, dass es etwas in die Sammlung zu tun hat, die Anzahl der Einzelteile zu erhalten und das scheint nur wenig intuitiv.

Hmm ... Ich würde nicht Größe verwenden. Da dies könnte mit der Größe in Bytes verwechseln. Länge - könnte einen Sinn für Arrays machen, solange sie sollen daraus folgende Byte Speicher verwenden. Obwohl ... Länge ... in was? Graf ist klar. Wie viele Elemente. Ich würde Zahl verwenden.

über Eigenschaft / Methode würde ich Eigenschaft verwenden, um zu markieren, es ist schnell, und ein Verfahren zu markieren, es ist langsam.

Und die wichtigste -. Ich die Standards der Sprachen / Bibliotheken bleiben würde Sie mit

Das Hinzufügen @ gbjbaanb Antwort ...

Wenn „Eigentum“ öffentlichen Zugriff auf den Wert impliziert, ich würde sagen, dass „Methode“ bevorzugt wird einfach Verkapselung bereitzustellen und die Umsetzung zu verbergen.

Sie könnten Sie etwas dagegen, ändern, wie Elemente count oder wie Sie diese count halten. Wenn es eine Eigenschaft ist, sind Sie stecken - wenn es über eine Methode acessed ist, können Sie die zugrunde liegende Implementierung ändern, ohne dass Benutzer der Sammlung aufprall

.

In Elixir gibt es tatsächlich ein klares Namensschema zugeordnet ist es über Typen in der Sprache.

  

, wenn die Anzahl von Elementen in einer Datenstruktur „Zählen“, Elixir   Auch hält sich an eine einfache Regel: Die Funktion ist benannt size, wenn die   Operation ist in konstanter Zeit (das heißt der Wert vorher berechnete) oder   length wenn die Operation linear (d.h. ist die Berechnung der Länge bekommt   langsamer als der Eingang wächst).

Für mich ist dies ein wenig wie die Frage, ob „foreach“ ist besser als „für jeden“. Es hängt nur von der Sprache / framework.

Ich würde sagen, es hängt davon ab, insbesondere Sprache , dass Sie verwenden, und Klassen . Wenn Sie zum Beispiel in c # verwenden Array Sie haben Property Länge, wenn Sie etwas, das von IEnumerable erbt Sie Erweiterung Methode Count (), aber es ist nicht schnell. Und wenn Sie von ICollection geerbt haben Sie Property Count.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top