Правила іменування змінних “кількість foos” [закрито]


87

Припустимо, що мені потрібно зберегти кількість об’єктів foo у змінній.

Не будучи носієм англійської мови, я завжди дивуюсь, яка найкраща (= коротка і відразу чітка) назва для цього варіанта.

foo_num? num_foo? no_foo? foo_no? чи щось інше?

Повна назва повинна бути number_of_foos, але це трохи багатослівно.

Який твій улюблений і чому?


Мені сподобалась відповідь fooCount, але я не думаю, що number_of_foos занадто довгий, але я гадаю, це залежить від того, що насправді є "foo".
Шанс

А також те, що ви хочете зробити зі змінною. Арифметичні вирази, що містять 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" звучить більш звично, ніж "the foo count" або "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" мені взагалі не пропонує чи звучить як слово "число". Це звучить як "ner", або, можливо, означає "не оцінено" або "національний регбі". :-) І я навіть не наважуся сказати, як звучить fooCnt. Просто ні.


15

Ядро Linux використовує "nr_foo", що краще, ніж "no_foo" (це виглядає як заперечення). Я сам, як правило, використовую "fooCount" або "fooCnt", але іноді також "numFoo". Я не впевнений, чому я коливаюся між "fooCount" та "numFoo". Думаю, це залежить від мого настрою. Але ти, ти повинен бути послідовним (як і я);)


4
@rjack - "число" невизначене, "кол" конкретне. Наприклад, число може бути ідентифікатором. [Я думаю, Макконелл робить це в "Коді завершено", але у мене немає копії.) Скорочення "число", швидше за все зрозуміле (крім авторів ядра Linux), включає "nFoo" і "numFoo".
Енді Томас,

1
@Andy Thomas-Cramer - Не настільки заплутане IMHO: credit_card_nrзвучить як "номер кредитної картки", тоді як nr_credit_cardsзвучить як "кількість кредитних карток" і коротше ніж credit_cards_count. Для мене це звучить цілком природно (але я можу помилятися, оскільки я не є носієм англійської мови).
Джакомо,

1
@rjack У будь-якому випадку це буде кредитна_карта_лічила, оскільки ти зазвичай не вживаєш множину іменників, коли вони є частиною сполуки.
siride

1
"Nr" Linux та ваша відповідь є хорошим прикладом того, наскільки заплутаним є слово "число". У Linux "nr" (також?) Використовується для позначення послідовного номера замість count. Наприклад __NR_open, не кількість openсистемних викликів - це індекс системного виклику, тобто значення, яке ви передаєте інструкції системного виклику, щоб вказати, який системний виклик ви викликаєте.
Руслан

1
Як і у відповіді @ Kal, я особисто уникав би fooCntчерез можливість неправильно трактувати її.
Ruben9922


5

Я особисто піду на total_foosабо totalFoosзалежно від мовного стандарту. Це краще представляє, що значення є кінцевим підсумком, а не просто поточним підрахунком.

Також має більший сенс сказати "у мене 3 загальних фоу", а не "у мене 3 кол фоу".

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


1
totalFoosможе означати, що це повний набір Foos (це сталося в моєму випадку, коли я збирав різні набори). Крім того, приємно мати ідентифікатор на початку слова для зручності читання. Тож я б пішов з foosCount, оскільки це менш двозначно і починається з foo*. Ви також можете сказати "У мене foosCount 3".
Магне

3

Здебільшого, fooCountяк усі казали. Іноді це доцільніше використовувати foos, як правило, коли у вас насправді немає списку foo, або вони не є окремими предметами (наприклад seconds; для піци, яку ви можете мати slices, тощо)

Використовуйте лише foosтоді, коли немає шансу заплутатися - тоді, коли очевидно, що у вас ніколи не буде списку foos в цьому контексті.


Якщо ви foosіноді foofoo
вживаєте слово

slicesдля мене звучить як масив sliceоб’єктів, які є частиною pizzaоб’єкта. Я б використав sliceCount, або nr_slices, або що завгодно (я ще не вирішив: D)
Джакомо

Так, використовуйте це лише тоді, коли немає шансів на конфузію
конфігуратор

2

Я використовую для кількості чогось: somethingCount ( something_count )

Я використовую для порядкового номера чого-небудь: somethingIndex ( something_index ), оскільки слово "число" неоднозначне ( воно означає кількість і порядковий номер )



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.