Соглашения об именах для переменных «количество 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.

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


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. Просто нет.


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


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 ), потому что слово «число» неоднозначно ( оно означает количество и порядковый номер )



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.