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.