通过使用大量编程语言和库,我注意到用于集合中元素总数的各种术语.
最常见的似乎是length
,count
和size
.
例如.
array.length vector.size() collection.count
是否有任何首选术语?它取决于它是什么类型的集合?即.可变/不可变
是否倾向于将其作为属性而不是方法?
Length()
倾向于引用连续的元素 - 例如,字符串具有长度.
Count()
倾向于指宽松集合中的元素数量.
Size()
倾向于引用集合的大小,通常这可能与向量(或字符串)之类的长度不同,字符串中可能有10个字符,但存储保留为20.它也可以指数量元素 - 检查源/文档.
Capacity()
- 用于专门引用集合中的已分配空间,而不是其中有效元素的数量.如果type同时定义了"capacity"和"size",那么"size"通常指的是实际元素的数量.
我认为主要的观点是人类语言和习语,字符串的大小似乎不是很明显,而一组的长度同样令人困惑,即使它们可能用于指代相同的东西(元素的数量) )在一组数据中.
FWIW(而且几乎没有任何东西),我更喜欢'Count',因为它似乎表明它将非常明确地返回集合中元素/项目的数量.
当面对"长度"或"大小"这个术语时,我常常想知道片刻(甚至被迫重新阅读文档)是否该死的事情会告诉我在集合中有多少元素或者如何集合消耗的许多字节.对于打算像数组或字符串一样具有连续性的集合尤其如此.
但是,没有人负责Java,BCL/.Net或C/C++标准框架/库所使用的命名约定,这些都很困扰我,所以你们都会遇到他们提出的问题.
如果只有我比我更聪明并被命名为Bjarne,你们所有人都可能幸免于难......
当然,回到现实世界中,您应该尝试坚持使用您正在使用的语言/平台的任何命名约定(例如,size()
在C++中).并不是说这似乎可以帮助你解决Array.Length
困境.
这些术语在某种程度上可以互换,但在某些情况下,我更喜欢一个而不是另一个.通常,如果你想一下,你可以得到最好的用法你如何口头描述这个元素的长度/大小/数量给另一个人?.
length()
暗示元素具有长度.字符串有一个长度.你说"一个字符串长20个字符",对吧?所以它有一个长度.
size()
暗示元素具有大小.例如,文件的大小.你说"这个文件大小为2 MB",对吧?所以它有一个大小.
也就是说,一个字符串也可以有一个大小,但我希望在这里有别的东西.例如,UTF-16字符串可能有100个字符的长度,但由于每个字符由两个字节组成,我希望大小为200.
count()
很不寻常.Objective-C使用count表示数组中的元素数.有人可能会争辩说,如果一个数组有一个长度(如在Java中),有一个大小(如在大多数其他语言中)或有一个计数.但是,大小可能再次是字节大小(如果数组项是32位int,每个项目是4个字节)和长度...我不会说"一个数组是20个元素长",这听起来很奇怪我.我会说"数组有20个元素".我不确定count是否表达得非常好,但我认为count在这里是一个简短的形式,elementCount()
并且对于数组而言再次比length()或size()更有意义.
如果使用编程语言创建自己的对象/元素,最好使用其他类似元素使用的任何对象/元素,因为程序员习惯使用该术语访问所需的属性.