Conventions de dénomination pour les variables «nombre de foos» [fermé]

87

Supposons que j'ai besoin de stocker le nombre d'objets foo dans une variable.

N'étant pas anglophone, je me demande toujours quel est le meilleur nom (= court et immédiatement clair) pour cette var.

foo_num? num_foo? no_foo? foo_no? ou autre chose?

Le nom complet devrait être number_of_foos, mais c'est un peu verbeux.

Quelle est votre préférée et pourquoi?

Giacomo
la source
J'ai aimé la réponse fooCount, mais je ne pense pas que number_of_foos soit trop long, mais je suppose que cela dépend de ce qu'est réellement "foo".
Chance
Et aussi ce que vous voulez faire avec la variable. Les expressions arithmétiques avec number_of_foosdedans deviennent rapidement lourdes.
user7610

Réponses:

47

Je préfère fooCountparce que c'est simple, et je pense que le mot «compter» est le plus court et le meilleur qui le décrit, pas «nombre de» ou autre.

Je vais pour FOO_COUNTsi vous avez besoin de le stocker final et statique (si vous n'avez pas besoin de le changer / si c'est une constante). (tout en majuscules pour les constantes!)

Je vais pour countet de l' appeler par Foo.countsi vous avez vraiment l' enregistrer comme un attribut pour une classe que vous avez fait, ce qui est Foo.

lisibilité pour vous et pour votre équipe!

ironmaurus
la source
foosCount, puisque le pluriel représente encore mieux un ensemble. Et il est censé compter un ensemble de choses.
Magne
Mais ça dépend. Le pluriel sonne bien pour certains noms comme gamesIncludedCount, mais le singulier sonne mieux pour d'autres noms tels que gameCount.
Magne
24

Puisque la variable stocke le nombre d'objets foo, fooCountobtient mon vote.

Justin Niessner
la source
+1 pour ajouter une justification (bien que le libellé soit plutôt inélégant).
1
@delnan - Normalement, je développerais mais je réponds depuis mon téléphone.
Justin Niessner
16

En anglais, les mots 'number' et 'count' peuvent tous deux agir comme des noms ou des verbes, mais il est probablement plus courant de voir 'number' utilisé comme nom et 'count' comme verbe. Ainsi, vous pourriez soutenir que «le nombre de foos» ou «num_foo» semble plus familier que «le nombre de foo» ou «foo_count». Cela me semble certainement plus naturel lorsque l'on fait référence à une quantité qui ne change pas constamment. Le mot «compter», même utilisé comme nom, me suggère une valeur qui augmente avec le temps.

Ruby et Python ont des méthodes .count, qui démontrent que le mot est utilisé comme verbe plutôt que comme nom. En Ruby, vous pourriez dire:

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

Pourtant, cela renvoie une valeur représentant le nombre de foos, ce qui est exactement ce à quoi vous pourriez vous attendre si vous venez de référencer une variable appelée «foo_count». Donc, à certains égards, le fait que «foos.count» et «foo_count» se ressemblent est plutôt sympa.

'Number' peut être ambigu dans certains cas, car il est courant de stocker des nombres qui ne représentent pas une quantité de quelque chose. D'autres personnes ont déjà mentionné des identifiants et des numéros de carte de crédit. Voici un autre exemple:

num_string

En regardant ce nom de variable, pouvez-vous deviner ce qu'il représente? Est-ce un entier représentant la quantité de chaînes ou est-ce une représentation sous forme de chaîne d'un nombre?

Donc, je réfléchis vraiment à voix haute, et je donne quelques avantages et inconvénients pour chacun comme je les vois. La raison pour laquelle je suis même sur cette vieille page est que je me retrouve à utiliser les deux de manière incohérente et que je pensais voir ce que les autres font.

BTW, je n'aime pas «nr_foo», car «nr» ne me suggère pas vraiment ou ne ressemble pas du tout au mot «numéro». Cela ressemble à «ner», ou peut-être signifie «non noté» ou «rugby national». :-) Et je n'oserai même pas dire à quoi ressemble fooCnt. Tout simplement pas.

Kal
la source
15

Le noyau Linux utilise "nr_foo", ce qui est meilleur que "no_foo" (qui ressemble à une négation). J'ai moi-même tendance à utiliser "fooCount" ou "fooCnt", mais aussi parfois "numFoo". Je ne sais pas pourquoi je vacille entre "fooCount" et "numFoo". Je suppose que cela dépend de mon humeur. Mais toi, tu devrais être cohérent (comme je devrais);)

siride
la source
4
@rjack - "number" est vague, "count" est spécifique. Un numéro peut être un identifiant, par exemple. [Je pense que McConnell fait valoir ce point dans «Code Complete», mais je n'en ai pas de copie avec moi.] Les abréviations de «nombre» plus probablement comprises (autres que par les auteurs du noyau Linux) incluent «nFoo» et «numFoo».
Andy Thomas
1
@Andy Thomas-Cramer - Pas si déroutant à mon humble avis: credit_card_nrsonne comme "numéro de carte de crédit", alors que nr_credit_cardssonne comme "nombre de cartes de crédit" et c'est plus court que credit_cards_count. Cela me semble assez naturel (mais je me trompe peut-être car je ne suis pas anglophone).
Giacomo le
1
@rjack Ce serait de toute façon credit_card_count, puisque vous ne pluralisez généralement pas les noms lorsqu'ils font partie d'un composé.
siride
1
Le "nr" de Linux et votre réponse sont un bon exemple de la confusion du mot "nombre". Sous Linux, "nr" est (également?) Utilisé pour désigner le nombre séquentiel au lieu de compter. Par exemple, ce __NR_openn'est pas le nombre d' openappels système - c'est l'index de l'appel système, c'est-à-dire la valeur que vous passez à l'instruction d'appel système pour spécifier l'appel système que vous invoquez.
Ruslan
1
Comme dans la réponse de @ Kal, j'éviterais personnellement en fooCntraison du risque de mal l'interpréter.
Ruben9922
8

fooCountsi la variable n'est pas une constante, FOO_COUNTsi c'est le cas. :RÉ

Gordon Gustafson
la source
5

Personnellement, j'irais pour total_foosou totalFoosselon la norme de langue. Il est préférable que la valeur soit un total final et pas seulement un décompte en cours.

Il est également plus logique de dire «J'ai 3 foos au total» plutôt que «J'ai un nombre de 3 foos».

Dans l'ensemble, ce n'est pas une grosse affaire mais j'utilise toujours totalplus count!

Volonté
la source
1
totalFoospourrait impliquer qu'il s'agit d'un ensemble complet de Foos (c'est arrivé dans mon cas, lorsque je collectionnais différents ensembles). De plus, c'est bien d'avoir l'identifiant au début du mot, pour plus de lisibilité. Alors j'irais avec foosCount, car il est moins ambivalent et commence par foo*. Vous pouvez également dire «J'ai un foosCount de 3».
Magne
3

Surtout fooCountcomme tout le monde l'a dit. Parfois, il est plus approprié d'utiliser foos, généralement lorsque vous n'avez pas la liste des foos, ou qu'ils ne sont pas des objets séparés (par exemple seconds, pour une pizza que vous pouvez avoir slices, etc.)

À n'utiliser que fooslorsqu'il n'y a aucun risque de confusion - lorsqu'il est évident que vous n'aurez jamais de liste de foos dans ce contexte.

configurateur
la source
Si vous utilisez foosparfois pour signifier "le nombre d' fooobjets" et d'autres fois pour signifier "la collection d' fooobjets, je pense que cela pourrait prêter à confusion.
James McNellis
slicesme sonne comme un tableau d' sliceobjets, qui font partie d'un pizzaobjet. J'utiliserais sliceCount, ou nr_slices, ou quoi que ce soit (je n'ai pas encore décidé: D)
Giacomo
Oui, utilisez-le uniquement lorsqu'il n'y a aucune chance de condusion
configurateur
2

J'utilise pour la quantité de quelque chose: somethingCount ( something_count )

J'utilise pour le numéro de séquence de quelque chose: somethingIndex ( something_index ), car le mot "number" est ambigu ( cela signifie la quantité et le numéro de séquence )

artamonovdev
la source
1

J'irais pour fooCount

CyberDude
la source
1

J'ai tendance à utiliser fooCount ou similaire.

Moteur Kurutepe
la source