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.