从使用多种编程语言和库的我已经注意到用于集合中元素的总数的各种术语。
最常见的似乎是length
, count
和size
。
例如。
array.length
vector.size()
collection.count
有没有使用任何合适的词? 它取决于它是什么类型的集合? 即。 可变/不可变
是否有它是一个属性,而不是方法的偏好?
从使用多种编程语言和库的我已经注意到用于集合中元素的总数的各种术语。
最常见的似乎是length
, count
和size
。
例如。
array.length
vector.size()
collection.count
有没有使用任何合适的词? 它取决于它是什么类型的集合? 即。 可变/不可变
是否有它是一个属性,而不是方法的偏好?
Length()
往往是指连续元素-的字符串具有例如长度。
Count()
往往是指元素的数量在更宽松的集合。
Size()
趋向于指集合的大小,通常这可以从在像载体(或字符串)的情况下的长度的不同,有可能在一个字符串10个字符,但存储被保留用于20.它还可以指到元件的数目 - 检查源/文档。
Capacity()
-用来专指在收集和分配的空间没有数它的有效元素。 如果类型具有两个“容量”,然后定义的“大小”,“尺寸”通常是指实际元素的个数。
我认为主要的问题是到人类的语言和成语,一个字符串的大小似乎并不十分明显,而一组的长度,即使它们可能被用来指代同样的事情同样混乱的元素(数)的数据集合。
FWIW(这就是微乎其微几乎为零),我更喜欢“计数”,因为它似乎表明,它要返回的内容/项目数的集合中相当unambigously。
当面对术语“长度”或“大小”我经常在想了一会儿(甚至被迫重新读取文档)这该死的东西是否会告诉我有多少元素在保藏或如何许多字节集合消费。 这对于旨在是contingous像数组或字符串集合尤其如此。
但是,没有人谁负责由Java,BCL / .NET,或使用的命名约定C / C ++标准的框架/不屑于问我,所以你们都坚持用他们想出了图书馆。
我要是比我聪明得多,并被评为Bjarne的,在座的各位可能幸免的痛苦......
当然,回到现实世界中,你应该尽量坚持使用任何命名约定所使用的是正在使用的语言/平台(例如, size()
在C ++中)。 不,这似乎帮助您与您的Array.Length
困境。
该术语是有点互换,虽然在某些情况下,我宁愿一个在另一个之上。 通常你可以得到最好的使用,如果你认为你会如何口头描述该元素的长度/大小/计数给其他人? 。
length()
意味着该元件具有的长度。 的字符串的长度。 你说“的字符串是20个字符长”,对不对? 因此,它的长度。
size()
意味着该元件具有一个尺寸。 例如,文件的大小。 你说“这个文件的大小为2 MB”,对不对? 因此,它的大小。
这就是说,一个字符串也可以有大小,但是我希望别的东西在这里。 例如UTF-16串可具有100个字符的长度,但因为每个字符由出2个字节的,我期望大小为200。
count()
是非常不寻常的。 Objective-C的使用计数数组中的元素的数量。 可能有人会说,如果一个数组的长度(如Java中)的大小(在大多数其他语言)或具有计数。 然而,大小可能再次以字节的尺寸(如果数组项是32位的int,每个项目为4字节)和长度...我不会说“数组是20个元素长”,这听起来很奇怪的至我。 我会说“数组有20个元素”。 我不知道如果计数表达是很清楚,但我觉得计数是这里的简表elementCount()
并且再更有道理的数组长度超过()或大小()。
如果您在一种编程语言自己的对象/元素,最好使用任何其它类似的元素使用,因为程序员用来访问使用该术语的所需特性。
算我认为这是最明显的术语,如果你正在寻找一个集合中的项目数量使用。 这甚至应该明显地向谁没有成为特别重视给定的语言然而新的程序员。
它应该是一种财产,这就是它是:集合的描述(又名属性)。 一种方法,将意味着它必须做一些事情来收集得到的项目数和似乎只是直观。
嗯...我不会用大小。 因为这可能与字节大小相混淆。 长度 - 可以做一些有意义的阵列,只要他们都应该使用的内存随之字节。 虽然... ...长在什么? 计数是明确的。 有多少元素。 我会用计数。
关于财产/法,我会用财产来标记它的快速和方法来标记它的速度慢。
而且,最重要的 - 我会坚持到你所使用的语言/库的标准。
添加到@ gbjbaanb的答案...
如果“属性”意味着对价值的公共访问,我要说的是,“办法”是首选只需提供封装和隐藏实施。
你可能会改变你如何记count
元素,或者您如何维护count
。 如果它是一个属性,你就完蛋了 - 如果它是通过一种方法acessed,您可以更改底层实现,而不会影响收集的用户。
在药剂居然有与它跨类型的语言相关的明确的命名方案。
当“计数”在数据结构中的元素数量,药剂也遵守由一个简单的规则:该函数称为
size
如果操作是在恒定时间(即,值是预先计算的)或length
如果操作是线性的(即计算长度变慢作为输入生长)。
对我来说,这是一个有点像问“的foreach”是否比“为每一个”更好。 这只是取决于语言/框架。
我会说,这取决于你正在使用和类特定的语言 。 例如,在C#中,如果您使用数组你有房产长度,如果你有一些自IEnumerable继承你的扩展方法 Count(),但它并不快。 如果你自ICollection继承你有房产计数。