Соглашения об именах для переменных «количество foos» [закрыто]

87

Предположим, мне нужно сохранить количество объектов foo в переменной.

Я не являюсь носителем английского языка, поэтому мне всегда интересно, какое имя лучше (= короткое и понятное) для этой переменной.

foo_num? num_foo? no_foo? foo_no? или что-то другое?

Имя должно быть полным number_of_foos, но немного многословным.

Какой твой любимый и почему?

Джакомо
источник
Мне понравился ответ fooCount, но я не думаю, что number_of_foos слишком длинный, но я полагаю, это зависит от того, что на самом деле представляет собой «foo».
Chance
А также то, что вы хотите сделать с переменной. Арифметические выражения с number_of_foosв нем быстро становятся громоздкими.
user7610

Ответы:

48

Я выбираю, fooCountпотому что это просто, и я думаю, что слово «подсчет» является самым коротким и лучшим, что описывает его, а не «количество» и т.п.

Я выбираю, FOO_COUNTесли вам нужно сохранить его окончательным и статическим (если вам не нужно его менять / если это константа). (все заглавные буквы для констант!)

Я иду countи вызываю его, Foo.countесли вам действительно нужно сохранить его как атрибут для созданного вами класса, то есть Foo.

читабельность для вас и вашей команды!

Ironmaurus
источник
foosCount, поскольку множественное число даже лучше представляет собой набор. И предполагается, что это будет набор вещей.
Магне
Но это зависит от обстоятельств. Множественное число хорошо звучит для некоторых имен gamesIncludedCount, но для других имен, таких как gameCount.
Магне
24

Поскольку переменная хранит количество объектов foo, fooCountя получаю мой голос.

Джастин Нисснер
источник
+1 за добавление обоснования (хотя формулировка довольно неэлегантна).
1
@delnan - Обычно я уточняю, но отвечаю со своего телефона.
Джастин Нисснер,
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' выглядят одинаково, неплохо.

«Число» может быть двусмысленным в некоторых случаях, поскольку обычно хранятся числа, которые не представляют количество чего-либо. Другие люди уже упоминали идентификаторы и номера кредитных карт. Вот еще один пример:

num_string

Глядя на это имя переменной, вы могли догадаться, что оно представляет? Это целое число, представляющее количество строк, или это строковое представление числа?

Так что на самом деле я просто думаю вслух и привожу несколько плюсов и минусов для каждого, как я их вижу. Причина, по которой я даже на этой старой странице, заключается в том, что я обнаруживаю, что использую эти две непоследовательно и думаю, что посмотрю, что делают другие люди.

Кстати, мне не нравится «nr_foo», поскольку «nr» на самом деле не предполагает и не звучит для меня как слово «число». Это звучит как «нер» или, возможно, означает «без рейтинга» или «национальное регби». :-) И даже не берусь сказать, как звучит fooCnt. Просто нет.

Kal
источник
15

Ядро Linux использует «nr_foo», что лучше, чем «no_foo» (это выглядит как отрицание). Я сам обычно использую «fooCount» или «fooCnt», но иногда также и «numFoo». Я не уверен, почему я колеблюсь между «fooCount» и «numFoo». Думаю, это зависит от моего настроения. Но вы, вы должны быть последовательны (как и я);)

сирида
источник
4
@rjack - «число» нечеткое, «количество» - конкретное. Например, число может быть идентификатором. [Я думаю, что МакКоннелл подчеркивает это в «Коде завершен», но у меня нет копии с собой.] Сокращения «числа», более понятные (кроме разработчиков ядра Linux), включают «nFoo» и «numFoo».
Энди Томас
1
@Andy Thomas-Cramer - Не так запутанно, ИМХО: credit_card_nrзвучит как «номер кредитной карты», а nr_credit_cardsзвучит как «количество кредитных карт» и короче credit_cards_count. Для меня это звучит вполне естественно (но я могу ошибаться, поскольку я не носитель английского языка).
Джакомо
1
@rjack В любом случае это будет credit_card_count, поскольку существительные обычно не образуют множественное число, когда они являются частью составного.
siride
1
Линукс «nr» и ваш ответ - хороший пример того, насколько сбивает с толку слово «число». В Linux «nr» (тоже?) Используется для обозначения порядкового номера вместо счетчика. Например, __NR_openэто не количество openсистемных вызовов - это индекс системного вызова, т.е. значение, которое вы передаете инструкции системного вызова, чтобы указать, какой системный вызов вы вызываете.
Руслан
1
Как и в ответе @ Kal, я бы лично избегал fooCntиз-за возможности неправильно его интерпретировать.
Ruben9922 04
8

fooCountесли переменная не является константой, FOO_COUNTесли это так. : D

Гордон Густафсон
источник
5

Лично я бы выбрал total_foosили в totalFoosзависимости от языкового стандарта. Он лучше показывает, что значение представляет собой окончательную сумму, а не просто текущий счет.

Также имеет смысл сказать «У меня всего 3 foos», чем «У меня 3 count foos».

В целом, это не так уж важно, но я всегда использую totalбольше count!

Будет
источник
1
totalFoosможет означать, что это полный набор Foos (это случилось в моем случае, когда я собирал различные наборы). Также неплохо иметь идентификатор в начале слова, для удобства чтения. Так что я бы пошел с foosCount, поскольку это менее амбивалентно и начинается с foo*. Вы также можете сказать: «У меня foosCount равно 3».
Магне
3

В основном, fooCountкак все говорили. Иногда более уместно использовать foos, обычно когда у вас фактически нет списка foos или они не являются отдельными объектами (например seconds, для пиццы, которую вы можете съесть slices, и т. Д.)

Используйте только foosтогда, когда нет шансов на путаницу - когда очевидно, что у вас никогда не будет списка foos в этом контексте.

конфигуратор
источник
Если вы используете foosиногда для обозначения «количество fooобъектов», а иногда для обозначения «совокупность fooобъектов», я бы подумал, что это может привести к путанице.
Джеймс МакНеллис
slicesзвучит для меня как массив sliceобъектов, которые являются частью pizzaобъекта. Я бы использовал sliceCount, или nr_slices, или что-то еще (я еще не решил: D)
Джакомо
Да, используйте это только тогда, когда нет шансов конденсации
конфигуратор
2

Я использую для количества вещей: somethingCount ( something_count )

Я использую для порядкового номера somethings: somethingIndex ( something_index ), потому что слово «число» неоднозначно ( оно означает количество и порядковый номер )

Артамоновев
источник
1

Я обычно использую fooCount или аналогичный.

Энгин Курутепе
источник