“ foos数量”变量的命名约定


87

假设我需要在一个变量中存储foo对象的数量。

我不是母语为英语的人,所以我总是想知道该变量的最佳名称(=简短且立即清晰)。

foo_numnum_foono_foofoo_no?或者是其他东西?

全名应该是number_of_foos,但是有点冗长。

你最喜欢什么,为什么?


我喜欢fooCount的答案,但是我不认为number_of_foos太长,但是我想它取决于“ foo”的实际含义。
机遇

以及您要对变量执行的操作。其中的算术表达式number_of_foos很快变得很麻烦。
user7610 '16

Answers:


47

fooCount之所以这样做是因为它很简单,我认为“ count”一词是描述它的最短和最好的,而不是“ number of”之类。

我去,FOO_COUNT如果它需要存储它的最终和静态(如果您不需要更改/如果它是一个常数)。(所有大写为常数!)

我去count,并通过调用它Foo.count,如果你真的必须将它保存为一个类的属性,你做,这是Foo

您和您的团队的可读性!


foosCount,因为复数更好地表示一组。它应该是一组事物的计数。
Magne

但这要看情况。复数听起来对某些名字听起来不错gamesIncludedCount,但奇异的声音对其他名字更好gameCount
马格纳


16

用英语,“数字”和“计数”这两个词都可以充当名词或动词,但更常见的是将“数字”用作名词,将“计数”用作动词。因此,您可能会说“ foos的数量”或“ num_foo”听起来比“ foo计数”或“ foo_count”更熟悉。当我引用一个不经常变化的数量时,对我来说,听起来当然更自然。“计数”一词即使用作名词,也向我暗示了随着时间的推移而上升的价值。

Ruby和Python具有.count方法,该方法演示将单词用作动词而不是名词。在Ruby中,您可能会说:

foos.count   # Count how many elements in the array 'foos'

尽管如此,它仍返回一个表示foos数量的值,如果您刚刚引用了一个名为“ foo_count”的变量,这恰好是您期望的值。因此,在某些方面,“ foos.count”和“ foo_count”看起来相似的事实有点不错。

在某些情况下,“数字”可能是模棱两可的,因为存储不代表一定数量的数字是很常见的。其他人已经提到过ID和信用卡号。这是另一个例子:

num_string

查看该变量名,您能猜出它代表什么吗?它是表示字符串数量的整数,还是数字的字符串表示形式?

所以我只是想一想,就每个人的优点和缺点给与我看。我之所以在这个旧页面上,是因为我发现自己不一致地使用了两者,并认为自己会看到其他人在做什么。

顺便说一句,我不喜欢'nr_foo',因为'nr'真的根本不暗示或听起来像'number'这个词。听起来像“内心”,或者代表“未评级”或“国家橄榄球”。:-)而且我什至不敢说fooCnt听起来像什么。就是不行。


15

Linux内核使用“ nr_foo”,这比“ no_foo”(看起来像个否定符)要好。我本人倾向于使用“ fooCount”或“ fooCnt”,但有时也使用“ numFoo”。我不确定为什么要在“ fooCount”和“ numFoo”之间摇摆。猜猜这取决于我的心情。但是你,你应该保持一致(我应该);)


4
@rjack-“数字”含糊不清,“计数”特定。例如,数字可以是ID。(我认为McConnell在“代码完成”中指出了这一点,但我没有复制它。)“ number”的缩写更可能被理解(Linux内核作者除外)包括“ nFoo”和“ numFoo”。
安迪·托马斯

1
@Andy Thomas-Cramer-恕我直言,不那么令人困惑:credit_card_nr听起来像“信用卡号”,而nr_credit_cards听起来像“信用卡号”,并且比短credit_cards_count。对我来说听起来很自然(但是我可能不会说英语,因为我不是英语母语人士)。
Giacomo

1
@rjack无论如何,这将是credit_card_count,因为当名词作为化合物的一部分时,通常不会对其进行复数处理。
siride

1
Linux的“ nr”和您的答案是“ number”一词令人困惑的一个很好的例子。在Linux中,“ nr”也用于表示序列号而不是count。例如,__NR_open这不是open系统调用的数量,而是系统调用的索引,即传递给系统调用指令以指定要调用的系统调用的值。
罗斯兰

1
就像@Kal的回答一样,我个人会避免使用,fooCnt因为它可能会错误地解释它。
Ruben9922


5

我个人会选择total_foostotalFoos取决于语言标准。该值最好是最终总计,而不仅仅是运行计数。

说“我总共有3个foo”比说“我有3个foos”更有意义。

总的来说,这不是什么大问题,但我总是total用完count


1
totalFoos可能暗示它是完整的Foos(在我的情况下,当我收集各种集时发生)。另外,为了便于阅读,最好在单词的开头加上标识符。因此,我会选择它foosCount,因为它的模棱两可性较低,并且从开头foo*。您也可以说“我的foosCount为3”。
Magne

3

大多fooCount像其他人说。有时更适合使用foos,通常是在您实际上没有foos列表或它们不是单独的对象时(例如seconds,对于披萨,您可以拥有slices等)。

不过,仅foos在没有混乱的机会时使用-当很明显在这种情况下您永远不会有foos列表时。


如果您使用foos有时指“的数量foo和其他时间的对象”是指“的集合foo对象,我认为这可能导致混乱。
詹姆斯McNellis

slices对我来说,听起来像是slice对象的数组,它们是pizza对象的一部分。我会使用sliceCount,或nr_slices,或任何其他方式(我尚未决定:D)
Giacomo

是的,仅在没有机会进行操作时才使用它
配置器

2

我用的东西的数量:somethingCountsomething_count

我使用某物的序列号:somethingIndexsomething_index),因为“数字”一词不明确(表示数量和序列号



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.