web-dev-qa-db-fra.com

Conventions de dénomination: que nommer une variable booléenne?

J'ai besoin d'un bon nom de variable pour une valeur booléenne qui renvoie false lorsqu'un objet est le dernier d'une liste.

Le seul nom décent que je peux trouver est "InFront", mais je ne pense pas que ce soit suffisamment descriptif.

Un autre choix serait "isNotLast". Ce n'est cependant pas une bonne pratique (Code Complete, page 269, Use positive boolean variable names).

Je suis conscient que je pourrais changer la définition de variable. Donc, true est renvoyé lorsqu'un objet est le dernier et appelle la variable 'isLast', cependant, cela faciliterait cette tâche si j'avais la première explication.

58
Berek Bryan
isBeforeTheLastItem

isInFrontOfTheLastItem

isTowardsTheFrontOfTheList

Peut-être trop verbeux mais ils peuvent vous donner des idées.

55
Bela

Mon vote serait de le nommer IsLast et de changer la fonctionnalité. Si ce n'est pas vraiment une option, je laisserais le nom IsNotLast.

Je suis d'accord avec Code Complete (utilisez des noms de variables booléennes positives), je crois également que les règles sont faites pour être enfreintes. La clé est de ne les briser que lorsque vous en avez absolument besoin. Dans ce cas, aucun des autres noms n'est aussi clair que le nom qui "enfreint" la règle. C'est donc l'un de ces moments où enfreindre la règle peut être acceptable.

32
Jeff Siver

hasFollowingItems? ou hasFollowingXXXXs où XXXX est quel que soit l'élément dans votre liste?

17
marklam

Personnellement, plus que tout, je changerais la logique, ou regarderais les règles métier pour voir si elles dictent un nom potentiel.

Depuis, la condition réelle qui fait basculer le booléen est en fait l'acte d'être "dernier". Je dirais que changer la logique et la nommer "IsLastItem" ou similaire serait une méthode plus préférée.

13
Mitchel Sellers

isPenultimateOrPrior

isBeforeEnd

4
Greg

Haskell utilise init pour faire référence à tous sauf le dernier élément d'une liste (l'inverse de tail, en gros); isInInit fonctionnerait-il ou est-ce trop opaque?

2

Un nom sémantique simple serait last. Cela permettrait au code toujours du code positif comme:

if (item.last)
    ...

do {
   ...
} until (item.last);
2
Wil Moore III

Que diriez-vous:

 hasSiblings
 or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.)
 or moreItems

Bien que je pense que même si vous ne devez pas prendre l'habitude de freiner `` les règles '', parfois la meilleure façon d'accomplir quelque chose peut être de faire une exception à la règle (directives de code complet), et dans votre cas, nommez la variable - isNotLast

1
Mike Dinescu

Deux points à considérer

  1. Quelle est la portée de la variable (en d'autres termes: parlez-vous d'une variable locale ou d'un champ?)? Une variable locale a une portée plus étroite par rapport à un champ. En particulier, si la variable est utilisée dans une méthode relativement courte, je ne me soucierais pas tellement de son nom. Lorsque la portée est grande, la dénomination est plus importante.

  2. Je pense qu'il y a un conflit inhérent dans la façon dont vous traitez cette variable. D'une part, vous dites "faux lorsqu'un objet est le dernier d'une liste", d'autre part, vous voulez également l'appeler "en face". Un objet qui n'est pas (pas) le dernier de la liste ne me semble pas (pas) inFront. J'irais avec isLast.

0
Itay Maman

J'appellerais la variable beforeLast.

0
John Topley

J'ai besoin d'un bon nom de variable pour une valeur booléenne qui renvoie false lorsqu'un objet est le dernier d'une liste.

Selon le plus récent Guide de style PEP 8 pour Python Code , les noms de variables "devraient être en minuscules, avec des mots séparés par des traits de soulignement si nécessaire pour améliorer la lisibilité." Ainsi, vous devez nommer votre variable par exemple.

is_not_last

D'autres langages de programmation utilisent le style lowerCamelCase pour les variables (par exemple, firstName, lastName). Cependant, Python préfère le style underscore_separated.

0
Karoly Nyisztor