通过使用大量编程语言和库,我注意到用于集合中元素总数的各种术语。

最常见的似乎是lengthcountsize

例如

array.length
vector.size()
collection.count

是否有任何首选术语? 它取决于它是什么类型的集合?即。可变/不可变

是否偏好它是属性而不是方法?

有帮助吗?

解决方案

Length()倾向于引用连续元素 - 例如,字符串具有长度。

Count()倾向于引用宽松集合中的元素数量。

Size()倾向于引用集合的大小,通常这可能与向量(或字符串)之类的长度不同,字符串中可能有10个字符,但存储空间保留为20。也可以参考元素数量 - 检查来源/文档。

Capacity() - 用于具体指代集合中的已分配空间,而不是其中有效元素的数量。如果type同时具有<!> quot; capacity <!> quot;和<!> quot; size <!> quot;然后定义<!> quot; size <!> quot;通常是指实际元素的数量。

我认为主要的观点是人类语言和习语,字符串的大小似乎并不十分明显,而一组的长度同样令人困惑,即使它们可能用于指代同一事物(数据集合中的元素数量。

其他提示

FWIW(而且几乎没有任何东西),我更喜欢'Count',因为它似乎表明它将非常明确地返回集合中元素/项目的数量。

当面对“长度”或“大小”这个术语时,我常常想知道片刻(甚至被迫重新阅读文档)是否该死的东西会告诉我有多少元素在集合或集合消耗的字节数。对于像数组或字符串一样具有意外性的集合尤其如此。

但是,没有人负责Java,BCL / .Net或C / C ++标准框架/库所使用的命名约定,这些都很困扰我,所以你们都会遇到他们提出的任何问题。

如果只有我比我更聪明并且被命名为Bjarne,你们所有人都可能幸免于难......

当然,回到现实世界,您应该尝试坚持使用您正在使用的语言/平台的任何命名约定(例如,在C ++中的size())。并不是说这似乎可以帮助你解决Array.Length困境。

这些术语在某种程度上是可以互换的,但在某些情况下我更喜欢一个而不是另一个。通常,如果您考虑如何以口头形式向另一个人描述此元素的长度/大小/数量,您可以获得最佳用途?

length()表示该元素具有长度。字符串有一个长度。你说<!>一个字符串是20个字符长<!>,对吧?所以它有一个长度。

size()表示该元素具有大小。例如。一个文件有一个大小。你说<!>“这个文件的大小是2 MB <!>”,对吧?所以它有一个大小。

也就是说,一个字符串也可以有一个大小,但我希望在这里有别的东西。例如。一个UTF-16字符串可能有100个字符的长度,但由于每个字符由两个字节组成,我希望大小为200。

count()很不寻常。 Objective-C使用count表示数组中的元素数。有人可能会争辩说,如果一个数组有一个长度(如在Java中),有一个大小(如在大多数其他语言中)或有一个计数。但是,大小可能再次是字节大小(如果数组项是32位int,每个项目是4个字节)和长度...我不会说<!> quot;数组是20个元素长<!> “这对我来说听起来很奇怪。我会说<!>一个数组有20个元素<!>“;我不确定count是否表达得非常好,但我认为count在这里是elementCount()的简短形式,而且对于数组来说再次比length()或size()更有意义。

如果您使用编程语言创建自己的对象/元素,最好使用其他类似元素使用的任何对象/元素,因为程序员习惯使用该术语访问所需的属性。

我认为,如果您正在寻找集合中的项目数,我认为这是最明显的术语。对于那些尚未特别依赖某种语言的新程序员来说,这一点应该是显而易见的。

它应该是一个属性,因为它就是它:集合的描述(aka属性)。一个方法意味着它必须对集合做一些事情以获得项目的数量,这似乎不直观。

嗯......我不会用尺码。因为这可能与字节大小混淆。 长度 - 可以对数组有所帮助,只要它们应该使用后续的内存字节。 虽然......长度......在什么? 伯爵很清楚。有多少元素。我会用伯爵。

关于属性/方法,我会使用属性来快速标记它,并且标记它的方法很慢。

而且,最重要的是 - 我会坚持您正在使用的语言/库的标准。

添加到@ gbjbaanb的回答......

如果<!>“;属性<!>”;意味着公众可以访问该值,我会说<!> quot; method <!> quot;首选只是提供封装并隐藏实现。

您可能会改变您对如何count元素或如何维护<=>的想法。如果它是一个属性,那么你就会陷入困境 - 如果它是通过一个方法获得的,你就可以改变底层实现,而不会影响该集合的用户。

在Elixir中,实际上有一种与语言类型相关的明确命名方案。

  

当<!>#8220;计算<!>#8221; Elixir数据结构中的元素数量   也遵守一个简单的规则:该函数命名为size如果   操作是恒定的时间(即预先计算的值)或   length如果操作是线性的(即计算长度得到   随着输入的增长而变慢。)

对我而言,这有点像询问是否<!>来自foreach <!>对于每个<!>引用优于<!>“;它只取决于语言/框架。

我会说这取决于您使用的特定语言。例如,在c#中,如果你使用的是数组,你有属性长度,如果你有从IEnumerable继承的东西你有扩展方法 Count(),但它不快。如果您从ICollection继承,则您拥有 Property Count。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top