Convenções de nomenclatura para variáveis ​​"número de foos" [fechado]


87

Vamos supor que eu precise armazenar o número de objetos foo em uma variável.

Não sendo um falante nativo de inglês, sempre me pergunto qual é o melhor nome (= curto e imediatamente claro) para essa var.

foo_num? num_foo? no_foo? foo_no? ou outra coisa?

O nome completo deve ser number_of_foos, mas é um pouco prolixo.

Qual é o seu favorito e por quê?


Gostei da resposta fooCount, mas não acho que number_of_foos seja muito longo, mas acho que depende do que "foo" realmente é.
Chance de

E também o que você quer fazer com a variável. Expressões aritméticas com number_of_foosele se tornam complicadas rapidamente.
user7610

Respostas:


47

Eu procuro fooCountporque é simples e acho que a palavra "contagem" é a mais curta e a melhor que a descreve, não "número de" ou algo parecido.

Eu procuro FOO_COUNTse você precisa armazená-lo final e estático (se você não precisa alterá-lo / se é uma constante). (todas em maiúsculas para constantes!)

I ir para counte chamando-o pelo Foo.countse você realmente tem que armazená-lo como um atributo para uma classe que você fez, o que é Foo.

legibilidade para você e para sua equipe!


foosCount, já que o plural representa ainda melhor um conjunto. E deve ser uma contagem de um conjunto de coisas.
Magne

Mas depende. Plural soa melhor para alguns nomes como gamesIncludedCount, mas singular soa melhor para outros nomes, como gameCount.
Magne

24

Visto que a variável armazena a contagem do número de objetos foo, fooCountrecebo meu voto.


+1 para adicionar uma justificativa (embora a frase seja um tanto deselegante).

1
@delnan - Normalmente eu elaboraria, mas estou respondendo do meu telefone.
Justin Niessner,

16

Em inglês, as palavras 'número' e 'contagem' podem atuar como substantivos ou verbos, mas é provavelmente mais comum ver 'número' usado como substantivo e 'contar' como verbo. Então você pode argumentar que 'o número de foos' ou 'num_foo' soa mais familiar do que 'a contagem de foo' ou 'foo_count'. Certamente parece mais natural para mim quando me referimos a uma quantidade que não muda constantemente. A palavra 'contagem', mesmo quando usada como substantivo, sugere-me um valor que está aumentando com o tempo.

Ruby e Python têm métodos .count, que demonstram a palavra sendo usada como um verbo, em vez de um substantivo. Em Ruby, você pode dizer:

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

Ainda assim, isso retorna um valor que representa o número de foos, que é exatamente o que você poderia esperar se referisse apenas uma variável chamada 'foo_count'. Então, de certa forma, o fato de 'foos.count' e 'foo_count' parecerem semelhantes é legal.

'Número' pode ser ambíguo em alguns casos, pois é comum armazenar números que não representam uma quantidade de algo. Outras pessoas já mencionaram IDs e números de cartão de crédito. Aqui está outro exemplo:

num_string

Olhando para o nome dessa variável, você consegue adivinhar o que ele representa? É um número inteiro que representa a quantidade de strings ou é uma representação de string de um número?

Então, estou apenas pensando em voz alta e dando alguns prós e contras para cada um, conforme os vejo. A razão pela qual estou nesta página antiga é porque estou usando os dois de maneira inconsistente e pensei que veria o que outras pessoas estão fazendo.

BTW, eu não gosto de 'nr_foo', pois 'nr' realmente não sugere ou soa como a palavra 'número' para mim. Soa como 'ner', ou talvez signifique 'não classificado' ou 'rugby nacional'. :-) E nem me arrisco a dizer como soa fooCnt. Apenas não.


15

O kernel Linux usa "nr_foo", que é melhor do que "no_foo" (que parece uma negação). Eu mesmo costumo usar "fooCount" ou "fooCnt", mas também às vezes "numFoo". Não sei por que vacilo entre "fooCount" e "numFoo". Acho que depende do meu humor. Mas você, você deve ser consistente (como eu deveria);)


4
@rjack - "número" é vago, "contagem" é específico. Um número pode ser um ID, por exemplo. [Acho que McConnell deixa isso claro em "Código completo", mas não tenho uma cópia comigo.] As abreviações de "número" mais provavelmente compreendidas (exceto pelos escritores do kernel do Linux) incluem "nFoo" e "numFoo".
Andy Thomas,

1
@Andy Thomas-Cramer - Não é tão confuso IMHO: credit_card_nrsoa como "número do cartão de crédito", enquanto nr_credit_cardssoa como "número de cartões de crédito" e é menor que credit_cards_count. Parece bastante natural para mim (mas posso estar errado, pois não sou um falante nativo de inglês).
Giacomo

1
@rjack Seria credit_card_count de qualquer maneira, já que você geralmente não pluraliza substantivos quando eles são parte de um composto.
siride de

1
O "nr" do Linux e sua resposta são um bom exemplo de como a palavra "número" é confusa. No Linux, "nr" é (também?) Usado para significar o número sequencial em vez de contagem. Por exemplo, __NR_opennão é o número de openchamadas do sistema - é o índice da chamada do sistema, ou seja, o valor que você passa para a instrução de chamada do sistema para especificar qual chamada do sistema você está invocando.
Ruslan

1
Como na resposta de @Kal, eu pessoalmente evitaria fooCntdevido ao potencial de interpretá-la incorretamente.
Ruben9922


5

Eu pessoalmente escolheria total_foosou totalFoosdependendo do padrão de linguagem. Representa melhor que o valor é um total final e não apenas uma contagem contínua.

Também faz mais sentido dizer "Eu tenho 3 foos no total" do que "Eu tenho uma contagem de 3 foos".

No geral, não é um grande negócio, mas eu sempre uso totaldemais count!


1
totalFoospoderia implicar que é um conjunto completo de Foos (aconteceu no meu caso, quando eu estava coletando vários conjuntos). Além disso, é bom ter o identificador no início da palavra, para facilitar a leitura. Então, eu continuaria foosCount, pois é menos ambivalente e começa com foo*. Você também pode dizer "Eu tenho um foosCount de 3".
Magne

3

Principalmente fooCountcomo todo mundo disse. Às vezes é mais apropriado usar foos, geralmente quando você não tem realmente a lista de foos, ou eles não são objetos separados (por exemplo seconds, para uma pizza que você pode comer slices, etc.)

Use apenas foosquando não houver chance de confusão - quando for óbvio que você nunca teria uma lista de foos neste contexto.


Se você usar foosàs vezes para significar "o número de fooobjetos" e outras vezes para significar "a coleção de fooobjetos, acho que isso pode causar confusão.
James McNellis

slicessoa para mim como uma série de sliceobjetos, que são parte de um pizzaobjeto. Eu usaria sliceCount, ou nr_slices, ou qualquer coisa (ainda não decidi: D)
Giacomo

Sim, só use quando não houver chance de condensação
configurador

2

Eu uso para a quantidade de alguma coisa: alguma coisaConta ( alguma coisa_conta )

Eu uso para o número de sequência de algo: algoIndex ( algo_index ), porque a palavra "número" é ambígua ( significa a quantidade e o número de sequência )



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.