2010-09-18 18 views
46

Supponiamo di dover memorizzare il numero di oggetti foo in una variabile.Convenzioni di denominazione per le variabili "numero di foos"

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 deve essere number_of_foos, ma è un po 'prolisso.

Qual è il tuo preferito e perché?

+0

Mi è piaciuta la risposta di fooCount, ma non penso che number_of_foos sia troppo lungo, ma suppongo che dipenda da cosa sia in realtà "foo". – Chance

+0

E anche cosa vuoi fare con la variabile. Le espressioni aritmetiche con 'number_of_foos' in esso diventano rapidamente ingombranti. – user7610

risposta

17

Vado per fooCount perché è semplice, e penso che la parola "contare" sia la più breve e la migliore che la descrive, non "numero di" o simili.

Vado per FOO_COUNT se è necessario memorizzarlo finale e statico (se non è necessario modificarlo/se è una costante). (tutte le maiuscole per le costanti!)

Vado per contare e chiamandolo da Foo.count se davvero lo devi memorizzare come attributo per una classe che hai creato, che è Foo.

leggibilità per te e per la tua squadra!

20

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

+0

+1 per aggiungere una motivazione (anche se il fraseggio è piuttosto inelegante). – delnan

+1

@delnan - Normalmente vorrei elaborare ma sto rispondendo dal mio telefono. –

1

mi piacerebbe andare per fooCount

1

Io tendo ad usare fooCount o simili.

8

fooCount se la variabile non è una costante, FOO_COUNT se lo è. : D

7

Il kernel di Linux utilizza "nr_foo", che è meglio di "no_foo" (che assomiglia a una negazione). Io stesso uso tendenzialmente "fooCount" o "fooCnt", ma a volte anche "numFoo". Non sono sicuro del perché oscilli tra "fooCount" e "numFoo". Credo dipenda dal mio umore. Ma tu, dovresti essere coerente (come dovrei);)

+2

@rjack - "number" è vago, "count" è specifico. Un numero potrebbe essere un ID, per esempio. [Penso che McConnell faccia questo punto in "Codice completo", ma non ho una copia con me.] Le abbreviazioni di "numero" più probabilmente comprese (oltre che dai kernel writer di Linux) includono "nFoo" e "numFoo". –

+0

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

+0

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

2

Principalmente fooCount come tutti hanno detto. A volte è più opportuno utilizzare foos, di solito quando in realtà non avete l'elenco dei Foos, o non sono oggetti distinti (ad esempio seconds, per una pizza si può avere slices, etc.)

Solo uso foos quando non c'è alcuna possibilità di confusione - quando è ovvio che non avresti mai una lista di foos in questo contesto.

+0

Se si usa "foos" a volte per "il numero di oggetti' foo' "e altre volte per indicare" la raccolta di oggetti 'foo'", penserei che potrebbe portare a confusione –

+0

'slices' mi suona come un array di oggetti 'slice', che fanno parte di un oggetto' pizza'.Io userei 'sliceCount', o' nr_slices', o qualsiasi altra cosa (non ho ancora deciso: D) – Giacomo

+0

Sì, lo uso solo quando non c'è possibilità di condusione – configurator

9

In inglese, le parole "numero" e "conteggio" possono entrambe agire come nomi o verbi, ma è probabilmente più comune vedere "numero" usato come nome e "contare" come un verbo. Quindi potresti dire che "il numero di foos" o "num_foo" suona più familiare di "il conteggio di foo" o "conto di foo". Sicuramente suona più naturale quando si fa riferimento a una quantità che non cambia continuamente. La parola 'contare', anche se usata come nome, mi suggerisce un valore che sta aumentando nel tempo.

Ruby e Python hanno metodi .count, che dimostrano che la parola viene utilizzata come verbo, anziché come nome. In Ruby si potrebbe dire:

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

Eppure, questo restituisce un valore che rappresenta il numero di Foos, che è esattamente quello che ci si potrebbe aspettare se hai appena fatto riferimento una variabile chiamata 'foo_count'. Quindi, in un certo senso, il fatto che "foos.count" e "foo_count" siano simili è piuttosto bello.

"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 carta di credito. Ecco un altro esempio:

num_string 

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

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

BTW, non mi piace "nr_foo", poiché "nr" non mi suggerisce o non mi sembra affatto la parola "numero". Suona come 'ner', o forse sta per 'not rated' o 'national rugby'. :-) E non mi avventurerò nemmeno a dire come suona qualcosa. Solo no.

0

uso per la quantità di quarantina: somethingCount (something_count)

uso per il numero di sequenza di quarantina: somethingIndex (something_index), perché la parola "numero" è ambigua (significa che la quantità e il numero di sequenza)

2

io personalmente sarebbe andato per total_foos o totalFoos dependi ng sullo standard della lingua. Rappresenta meglio che il valore è un totale finale e non solo un conteggio parziale.

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

Nel complesso, non è un grosso problema, ma io uso sempre total su count!

Problemi correlati