Правила іменування змінних “кількість 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.