Konwencje nazewnictwa dla zmiennych „liczba foos” [zamknięte]

90

Załóżmy, że muszę przechowywać liczbę obiektów foo w zmiennej.

Nie będąc native speakerem języka angielskiego, zawsze zastanawiam się, jaka jest najlepsza (= krótka i od razu jasna) nazwa dla tego var.

foo_num? num_foo? no_foo? foo_no? albo coś innego?

Pełna nazwa powinna być number_of_foos, ale jest trochę rozwlekła.

Jaki jest Twój ulubiony i dlaczego?

Giacomo
źródło
Podobała mi się odpowiedź fooCount, ale nie sądzę, aby liczba_f_foos była zbyt długa, ale przypuszczam, że zależy to od tego, czym właściwie jest "foo".
Szansa
A także co chcesz zrobić ze zmienną. Wyrażenia arytmetyczne zawierające number_of_foosin szybko stają się uciążliwe.
user7610

Odpowiedzi:

52

Idę na fooCountto, ponieważ jest to proste i myślę, że słowo „liczba” jest najkrótszym i najlepszym określeniem, a nie „liczba” i tym podobne.

Idę na FOO_COUNTto, czy trzeba to przechowywać ostateczne i statyczne (jeśli nie trzeba tego zmieniać / jeśli jest stałe). (wszystkie kapsle dla stałych!)

Idę do tego counti nazywam to, Foo.countjeśli naprawdę musisz przechowywać go jako atrybut klasy, którą stworzyłeś, czyli Foo.

czytelność dla Ciebie i Twojego zespołu!

ironmaurus
źródło
foosCount, ponieważ liczba mnoga jeszcze lepiej reprezentuje zbiór. I ma być zliczeniem zbioru rzeczy.
Magne
Ale to zależy. Liczba mnoga brzmi dobrze w przypadku niektórych nazw, takich jak gamesIncludedCount, ale liczba pojedyncza lepiej brzmi w przypadku innych nazw, takich jak gameCount.
Magne
26

Ponieważ zmienna przechowuje liczbę obiektów foo, fooCountdostaje mój głos.

Justin Niessner
źródło
+1 za dodanie uzasadnienia (chociaż sformułowanie jest raczej nieeleganckie).
1
@delnan - Normalnie rozwinąłbym więcej, ale odbieram z telefonu.
Justin Niessner
17

W języku angielskim słowa „liczba” i „liczba” mogą działać zarówno jako rzeczowniki, jak i czasowniki, ale prawdopodobnie częściej spotyka się słowo „liczba” używane jako rzeczownik, a „licznik” jako czasownik. Można więc argumentować, że „liczba foos” lub „num_foo” brzmi znajomo niż „liczba foo” lub „foo_count”. Z pewnością brzmi to dla mnie bardziej naturalnie, gdy odnoszę się do ilości, która nie ulega ciągłym zmianom. Słowo „count”, nawet użyte jako rzeczownik, sugeruje mi wartość, która z czasem rośnie.

Ruby i Python mają metody .count, które pokazują, że słowo jest używane jako czasownik, a nie rzeczownik. W Rubim możesz powiedzieć:

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

Mimo to zwraca wartość reprezentującą liczbę foos, czyli dokładnie to, czego można by się spodziewać, gdybyśmy po prostu odwołali się do zmiennej o nazwie „foo_count”. Więc pod pewnymi względami fakt, że „foos.count” i „foo_count” wyglądają podobnie, jest fajny.

W niektórych przypadkach „liczba” może być niejednoznaczna, ponieważ często przechowuje się liczby, które nie reprezentują jakiejś ilości. Inni już wspominali o dowodach osobistych i numerach kart kredytowych. Oto kolejny przykład:

num_string

Patrząc na tę nazwę zmiennej, czy możesz odgadnąć, co ona reprezentuje? Czy jest to liczba całkowita reprezentująca liczbę ciągów, czy jest to ciąg reprezentujący liczbę?

Więc po prostu myślę głośno i przedstawiam kilka zalet i wad każdego z nich, tak jak je widzę. Powodem, dla którego nawet jestem na tej starej stronie, jest to, że używam tych dwóch niekonsekwentnie i myślałem, że zobaczę, co robią inni ludzie.

Przy okazji, nie lubię „nr_foo”, ponieważ „nr” naprawdę nie sugeruje ani nie brzmi dla mnie jak słowo „numer”. Brzmi jak „ner” lub może oznacza „nieoceniony” lub „narodowe rugby”. :-) I nawet nie zaryzykuję powiedzieć, jak brzmi fooCnt. Po prostu nie.

Kal
źródło
15

Jądro Linuksa używa "nr_foo", które jest lepsze niż "no_foo" (które wygląda jak negacja). Ja sam używam „fooCount” lub „fooCnt”, ale czasami też „numFoo”. Nie jestem pewien, dlaczego waham się między „fooCount” a „numFoo”. Chyba zależy to od mojego nastroju. Ale ty powinieneś być konsekwentny (tak jak ja);)

siride
źródło
4
@rjack - „liczba” jest niejasna, „liczba” jest konkretna. Na przykład numer może być identyfikatorem. [Myślę, że McConnell zwraca uwagę na to w „Code Complete”, ale nie mam kopii ze sobą.] Skróty „number”, które są bardziej zrozumiałe (inne niż przez autorów jądra Linuksa), obejmują „nFoo” i „numFoo”.
Andy Thomas,
1
@Andy Thomas-Cramer - Nie takie zagmatwane IMHO: credit_card_nrbrzmi jak „numer karty kredytowej”, podczas gdy nr_credit_cardsbrzmi jak „liczba kart kredytowych” i jest krótsze niż credit_cards_count. Brzmi dla mnie całkiem naturalnie (ale mogę się mylić, ponieważ nie jestem native speakerem).
Giacomo
1
@rjack I tak byłoby to credit_card_count, ponieważ generalnie rzeczowników nie tworzy się w liczbie mnogiej, gdy są one częścią związku.
siride,
1
Linuxowy "nr" i twoja odpowiedź to dobry przykład tego, jak mylące jest słowo "liczba". W Linuksie „nr” jest (także?) Używane do oznaczenia liczby sekwencyjnej zamiast liczby. Np. __NR_openNie jest liczbą openwywołań systemowych - to indeks wywołania systemowego, tj. Wartość, którą przekazujesz do instrukcji wywołania systemowego, aby określić, które wywołanie systemowe wywołujesz.
Ruslan
1
Podobnie jak w odpowiedzi @ Kal, osobiście unikałbym fooCntze względu na możliwość błędnej interpretacji.
Ruben9922
8

fooCountjeśli zmienna nie jest stałą, FOO_COUNTjeśli tak jest. :RE

Gordon Gustafson
źródło
5

Osobiście wybrałbym total_fooslub w totalFooszależności od standardu językowego. Lepiej reprezentuje to, że wartość jest sumą końcową, a nie tylko bieżącą liczbą.

Bardziej sensowne jest też powiedzenie „Mam łącznie 3 foos” niż „Mam 3 liczyć foos”.

Ogólnie rzecz biorąc, to nie jest wielka sprawa, ale zawsze używam totalponad count!

Wola
źródło
1
totalFoosmogłoby sugerować, że jest to kompletny zestaw Foos (zdarzyło się to w moim przypadku, gdy zbierałem różne zestawy). Ponadto dobrze jest mieć identyfikator na początku słowa, aby był czytelny. Więc wybrałbym foosCount, ponieważ jest mniej ambiwalentny i zaczyna się od foo*. Możesz też powiedzieć „Mam foosCount równy 3”.
Magne
3

W większości fooCounttak, jak wszyscy mówili. Czasami jest to bardziej odpowiednie w użyciu foos, zwykle gdy w rzeczywistości nie masz listy foos lub nie są one oddzielnymi obiektami (np. secondsNa pizzę, którą możesz mieć slicesitp.)

Używaj tylko fooswtedy, gdy nie ma szans na pomyłkę - gdy jest oczywiste, że nigdy nie miałbyś listy foos w tym kontekście.

konfigurator
źródło
Jeśli użyjesz foosczasami określenia „liczba fooobiektów”, a innym razem „zbiór fooobiektów”, to myślę, że może to prowadzić do nieporozumień.
James McNellis
slicesbrzmi dla mnie jak tablica sliceobiektów, które są częścią pizzaobiektu. Użyłbym sliceCount, albo nr_slices, czy cokolwiek (jeszcze nie zdecydowałem: D)
Giacomo
Tak, używaj tego tylko wtedy, gdy nie ma szans na połączenie
konfigurator
2

Używam dla ilości czegoś: cosCount ( something_count )

Używam numeru sekwencji czegoś: somethingIndex ( something_index ), ponieważ słowo „numer” jest niejednoznaczne ( oznacza ilość i numer kolejny )

artamonovdev
źródło
1

Ja bym poszedł fooCount

CyberDude
źródło
1

Zwykle używam fooCount lub podobnego.

Engin Kurutepe
źródło