Convenzioni di denominazione per le variabili "numero di foos" [chiuso]


90

Supponiamo di dover memorizzare il numero di oggetti foo in una variabile.

Non essendo un madrelingua inglese, mi chiedo sempre qual è il nome migliore (= breve e immediatamente chiaro) per quella var.

foo_num? num_foo? no_foo? foo_no? o qualcos'altro?

Il nome completo dovrebbe essere number_of_foos, ma è un po 'prolisso.

Qual è il tuo preferito e perché?


Mi è piaciuta la risposta fooCount, ma non penso che number_of_foos sia troppo lungo, ma suppongo che dipenda da cosa sia effettivamente "foo".
Possibilità

E anche cosa vuoi fare con la variabile. Le espressioni aritmetiche number_of_foosal suo interno diventano rapidamente ingombranti.
user7610

Risposte:


52

Lo scelgo fooCountperché è semplice e penso che la parola "conteggio" sia la più breve e la migliore che lo descrive, non "numero di" o simili.

Vado per FOO_COUNTse è necessario memorizzarlo finale e statico (se non è necessario modificarlo / se è una costante). (tutto maiuscolo per le costanti!)

Lo scelgo counte lo chiamo Foo.countse devi davvero memorizzarlo come attributo per una classe che hai creato, ovvero Foo.

leggibilità per te e per la tua squadra!


foosCount, poiché il plurale rappresenta ancora meglio un insieme. E dovrebbe essere un conteggio di un insieme di cose.
Magne

Ma dipende. Il plurale suona bene per alcuni nomi come gamesIncludedCount, ma il singolare suona meglio per altri nomi come gameCount.
Magne

26

Poiché la variabile memorizza il conteggio del numero di oggetti foo, fooCountottiene il mio voto.


+1 per l'aggiunta di una motivazione (anche se il fraseggio è piuttosto inelegante).

1
@delnan - Normalmente vorrei elaborare ma rispondo dal mio telefono.
Justin Niessner

17

In inglese, le parole "numero" e "conteggio" possono agire entrambe come nomi o verbi, ma probabilmente è più comune vedere "numero" usato come nome e "conteggio" come verbo. Quindi potresti sostenere che "il numero di pippo" o "num_foo" suona più familiare di "il conteggio pippo" o "pippo_count". Sicuramente mi sembra più naturale fare riferimento a una quantità che non cambia costantemente. La parola 'count', anche se usata come sostantivo, mi suggerisce un valore che sta aumentando nel tempo.

Ruby e Python hanno metodi .count, che dimostrano che la parola è usata come verbo, piuttosto che come nome. In Ruby potresti dire:

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

Tuttavia, questo restituisce un valore che rappresenta il numero di foo, che è esattamente quello che ci si potrebbe aspettare se si facesse riferimento a una variabile chiamata "foo_count". Quindi, in un certo senso, il fatto che 'foos.count' e 'foo_count' siano simili è piuttosto carino.

"Numero" può essere ambiguo in alcuni casi, poiché è comune memorizzare numeri che non rappresentano una quantità di qualcosa. Altre persone hanno già menzionato ID e numeri di carte di credito. Ecco un altro esempio:

num_string

Guardando quel nome di variabile, potresti indovinare cosa rappresenta? È un numero intero che rappresenta la quantità di stringhe o è una rappresentazione di stringa di un numero?

Quindi sto solo pensando ad alta voce davvero, e sto dando alcuni pro e contro per ciascuno come li vedo. Il motivo per cui sono anche su questa vecchia pagina è perché mi ritrovo a usare i due in modo incoerente e ho pensato di vedere cosa stanno facendo gli altri.

A proposito, non mi piace "nr_foo", poiché "nr" non mi suggerisce o suona affatto come la parola "numero". Suona come "ner", o forse sta per "non classificato" o "rugby nazionale". :-) E non mi azzarderò nemmeno a dire come suona fooCnt. Proprio no.


15

Il kernel Linux usa "nr_foo", che è meglio di "no_foo" (che sembra una negazione). Io stesso tendo a usare "fooCount" o "fooCnt", ma a volte anche "numFoo". Non sono sicuro del motivo per cui esito tra "fooCount" e "numFoo". Immagino dipenda dal mio umore. Ma tu, dovresti essere coerente (come dovrei io);)


4
@rjack - "number" è vago, "count" è specifico. Un numero potrebbe essere un ID, ad esempio. [Penso che McConnell chiarisca questo punto in "Code Complete", ma non ne ho una copia con me.] Le abbreviazioni di "number" più probabilmente comprese (oltre che dagli autori del kernel Linux) includono "nFoo" e "numFoo".
Andy Thomas,

1
@ Andy Thomas-Cramer - Non così confuso IMHO: credit_card_nrsuona come "numero di carta di credito", mentre nr_credit_cardssuona come "numero di carte di credito" ed è più breve di credit_cards_count. Mi sembra abbastanza naturale (ma potrei sbagliarmi dato che non sono un madrelingua inglese).
Giacomo

1
@rjack Sarebbe comunque credit_card_count, dal momento che generalmente non pluralizzi i nomi quando fanno parte di un composto.
siride

1
Il "nr" di Linux e la tua risposta sono un buon esempio di quanto sia confusa la parola "numero". In Linux, "nr" è (anche?) Usato per indicare il numero sequenziale invece di count. Ad esempio, __NR_opennon è il numero di openchiamate di sistema - è l'indice della chiamata di sistema, cioè il valore che passi all'istruzione di chiamata di sistema per specificare quale chiamata di sistema stai invocando.
Ruslan,

1
Come nella risposta di @ Kal, lo eviterei personalmente a fooCntcausa della possibilità di interpretarlo in modo errato.
Ruben9922


5

Personalmente sceglierei total_fooso totalFoosdipendesse dallo standard linguistico. Rappresenta meglio che il valore sia un totale finale e non solo un conteggio parziale.

Ha anche più senso dire "Ho 3 foos totali" piuttosto che "Ho un conteggio di 3 foos".

Nel complesso, non è un affare enorme, ma io uso sempre totalsopra count!


1
totalFoospotrebbe significare che si tratta di un set completo di Foos (è successo nel mio caso, quando stavo collezionando vari set). Inoltre, è bello avere l'identificatore all'inizio della parola, per leggibilità. Quindi andrei con foosCount, poiché è meno ambivalente e inizia con foo*. Potresti anche dire "Ho un foosCount di 3".
Magne

3

Per lo più fooCountcome hanno detto tutti. A volte è più appropriato usare foos, di solito quando non hai effettivamente l'elenco dei foo, o non sono oggetti separati (ad esempio seconds, per una pizza puoi avereslices , ecc.)

Usalo solo foosquando non c'è possibilità di confusione, quando è ovvio che non avresti mai un elenco di foo in questo contesto.


Se a foosvolte usi per indicare "il numero di foooggetti" e altre volte per indicare "la raccolta di foooggetti, penso che potrebbe creare confusione.
James McNellis

slicesmi suona come un insieme di sliceoggetti, che fanno parte di un pizzaoggetto. Userei sliceCount, o nr_slices, o qualsiasi altra cosa (non ho ancora deciso: D)
Giacomo

Sì, usalo solo quando non c'è possibilità di condusione
configuratore

2

Uso per la quantità di qualcosa: somethingCount ( something_count )

Uso per il numero progressivo di qualcosa: somethingIndex ( something_index ), perché la parola "numero" è ambigua ( significa la quantità e il numero progressivo )



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.