web-dev-qa-db-fra.com

Existe-t-il une terminologie pour "vrai" ing, "faux" ing et basculer un booléen?

Disons que j'essaie de décrire mon code lors d'une réunion technique.

Tout d'abord, j'ai défini le booléen foobar sur true

et

Deuxièmement, j'ai défini le booléen foobar sur false

semble un peu verbeux. Si foobar était basculé, je pourrais probablement dire,

Troisièmement, je basculefoobar

Par implication ici, vous savez que c'est un booléen. Je ne devrais donc pas pouvoir:

Quatrièmement, je Truthify foobar

et

Cinquièmement, je Falsify foobar

Lequel impliquera également, par implication, que mes auditeurs ont affaire à une variable booléenne? Existe-t-il une terminologie appropriée pour cela? Merci.

26
Akiva
  • Définir une valeur sur true est paramètre it
  • Le définir sur false est effacement il.
  • La modification de la valeur actuelle est basculement it.

Vous pouvez également utiliser "le définir sur true" et "le définir sur false", bien sûr.

53
user253751

Si possible, plutôt que de vous concentrer sur la valeur booléenne, vous devriez essayer de décrire ce qu'elle représente. Quelques exemples:

  • un service? démarrer/arrêter au lieu de commencé = vrai/faux
  • un effet spécial dans un moteur de jeu? Allumé éteint
  • un signal électrique? définir/réinitialiser
  • ...

De cette façon, vous parleriez en termes plus naturels. Et donc lors de votre réunion, au lieu de "véritéifier foobar puis falsifier", vous devez simplement "démarrer foobar puis l'arrêter" (si foobar est un service, en effet).

Lorsque vous avez vraiment besoin de parler d'une valeur booléenne, vous pouvez aller avec "set/reset", ou "set to true" et "set to false". "Toggle" sonne plutôt bien dans tous les contextes.

Et si vous travaillez dans une boutique booléenne (quoi que cela puisse signifier), vous avez probablement besoin de plus de mots que ce que le dictionnaire a à offrir. Dans ce cas, vérité et falsification sont simplement des parties de votre microspeak .

66
user44761

J'aime "set"/"clear", mais attention à l'ambiguïté dans votre phrasé. Comme Filip le souligne , "définir la variable bool" pourrait signifier écrire une certaine valeur dans la variable. Mais "mettre le drapeau" est plus clair.


Terminologie associée: transformer un entier 0/non nul en une valeur 0/1 est appelé "booleanizing".

Si vous utilisez réellement la valeur 0/1 comme un entier (au lieu d'un vrai/faux bool), vous souhaiterez peut-être utiliser ce mot. Sinon, cela n'apparaîtra probablement que si vous parlez du coût des opérations que le compilateur doit effectuer. (Ou si vous vectorisez manuellement avec un SIMD, comparez pour produire des bits à zéro/tout-en-un dans chaque élément vectoriel).

En C et C++, un bool peut implicitement se reconvertir en un entier sous la forme 0 ou 1, et sur les implémentations normales bool est stocké comme une valeur sur un octet qui est soit 0 soit 1 (pas n'importe quelle valeur non nulle). Le permet efficace a && b, mais dans la pratique, de nombreux compilateurs C ont manqué des optimisations .


bool booleanize(int a) { return a; }   // C++

Cette fonction se compile en plusieurs instructions (sans inclure le ret) sur la plupart des architectures. (MIPS étant une exception intéressante, ayant des instructions de comparaison dans le registre au lieu d'un registre d'indicateur/code de condition séparé). sur l'explorateur du compilateur Godbolt pour x86-64, MIPS et ARM thumb , nous pouvons voir que la version x86-64 est:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

Désolé cet exemple de ce qu'est la booleanisation est devenu un peu grand/hors sujet!

2
Peter Cordes

Je pense que "définir Foobar sur vrai" et "définir Foobar sur faux" sont simples et succincts. Je ne crois pas qu'il y ait des mots individuels pour ces phrases, et lorsque vous devez être à la fois technique et précis, il vaut parfois mieux être prêt à être un peu verbeux que de risquer de confondre votre public.

0
Kevin