Existe terminologia para "verdadeiro", "falso" e alternar um booleano? [fechadas]

23

Digamos que estou tentando descrever meu código em uma reunião técnica.

Primeiro, defino o booleano foobarcomotrue

e

Segundo, defino o booleano foobarcomofalse

parece um pouco prolixo. Se foobarfoi alternado, eu provavelmente poderia dizer,

Terceiro, eu alterno foobar

Por implicação aqui, você sabe que é um booleano. Portanto, eu não deveria ser capaz de:

Quarto, eu truthify foobar

e

Quinto, eu falsifico foobar

O que também implicará dizer aos meus ouvintes que estamos lidando com uma variável booleana? Existe terminologia adequada para isso? Obrigado.

Akiva
fonte
16
"Defino foobar como true / false" não é tão prolixo e é óbvio que é um bool. "Alternar" é bastante claro para os ouvintes, IMO.
Filip Milovanović
8
"Primeiro, defino o foobar booleano como true e, em segundo, defino o foobar booleano como false". Você não poderia simplesmente defini-lo como falso? ;)
David Arno
2
Eu sempre pensei que era chamado de inversão, mas aparentemente isso é o termo para bits , não Bools
e_i_pi
16
Eu li falsificar como equivalente a criar uma falsificação e não definir o valor como falso.
CodesInChaos
6
Tem certeza de que espera descrever seu código em um nível tão baixo? Certamente, se alguém quiser uma descrição de nível tão baixo, acabará de ler o código. Não estou dizendo que nunca há um motivo para usar essa terminologia, mas espero que seja raro.
Dukeling

Respostas:

52
  • Definir um valor como true é defini- lo
  • Configurá-lo para false é limpá- lo.
  • Alterar o valor atual é alterná- lo.

Você também pode usar "configurando como true" e "configurando como false" , é claro.

user253751
fonte
10
Não correlato definir um valor como false como limpá-lo. Limpar para mim significa: nem verdadeiro nem falso.
Pieter B
49
@ PieterB: Bem, isso depende do contexto; se estamos falando de um sinalizador booleano, "definir" e "limpar" o sinalizador é uma terminologia bastante comum.
Filip Milovanović
7
@ FilipMilovanović No contexto das variáveis, definir uma variável significa atribuir um valor à referida variável, no contexto da variável booleana esse valor pode ser verdadeiro ou falso. Seria estranho dizer: ei, definir uma variável significa atribuir um valor a ela ... exceto quando é uma variável booleana e, na verdade, quando a definimos, queremos dizer que atribuímos o valor: "true"
Pieter B
6
@PieterB Se pode ser "nem verdadeiro nem falso", não é um booleano binário (que é o que a maioria das pessoas pensa quando escuta a palavra), mas uma coisa ternária verdadeira / falsa / indeterminada. Dito isto, a terminologia definida / clara vem de sinalizadores. Nem todas as variáveis ​​booleanas são sinalizadores, portanto, a terminologia é inadequada para muitos casos de uso.
Cubic
7
@ PieterB: Sim - seria estranho dizer "definir a variável bool" e esperar que todos entendam que isso significa "definir como verdadeiro"; mas se representa um sinalizador, "definir o sinalizador" é algo comumente usado e significa definir o valor do bool que representa o sinalizador como true (ou o bit que representa o sinalizador como 1). (PS Mas a resposta por immibis não levar isso em conta.)
Filip Milovanović
66

Se possível, em vez de focar no valor booleano, tente descrever o que ele representa. Alguns exemplos:

  • um serviço? iniciar / parar em vez de iniciado = verdadeiro / falso
  • um efeito especial em um mecanismo de jogo? ligado desligado
  • um sinal elétrico? definir / redefinir
  • ...

Dessa forma, você falaria em termos mais naturais. E, portanto, em sua reunião, em vez de "falsificar o foobar e depois falsificá-lo", você simplesmente "iniciava o foobar e depois parava" (se foobar é um serviço, de fato).

Quando você realmente precisa falar sobre um valor booleano, pode ir com "set / reset" ou "set to true" e "set to false". "Alternar" soa bem em todos os contextos.

E se você trabalha em uma loja booleana (o que isso possa significar), provavelmente precisará de mais palavras do que o que o dicionário tem a oferecer. Nesse caso, verdade e falsificação são simplesmente partes do seu microspeak .


fonte
16
Tenho que concordar ... booleano é a implementação que modela o que você realmente está falando ... então fale sobre isso!
Maybe_Factor
2
Eu não gosto de falar sobre definir um booleano como torná-lo verdadeiro. Como a maneira como trabalho com variáveis, elas começam não inicializadas, o que significa que basicamente você ainda não pode usá-las e o ato de definir uma variável (verdadeira ou falsa) é a inicialização. Se definir sempre significa verdadeiro, causaria confusão.
Pieter B
1
Além disso, esse uso da terminologia também se traduz em código; Geralmente é melhor - nem sempre, é claro - melhor usar uma enumeração de dois valores em vez do tipo booleano incorporado; signal = HighVoltageou signal = Activeé IMHO muito mais claro que signal = true.
Cubic
Observe que uma propriedade / variável booleana nomeada corretamente sempre revelará imediatamente o nome que você deve usar para os valores. Pense isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Eu concordo parcialmente com você. "Definir o booleano" não significa inerentemente configurá-lo como true. No entanto, "Definir o isActivesinalizador" pode ser razoavelmente interpretado para significar configurá-lo como verdadeiro.
Flater
1
@ Cubic: Eu discordo. Futura expansão à parte, um enum binário parece desnecessário. signal = trueDe fato, não está claro, mas se você for usar signal = Active, poderá usá-lo isSignalActive = true. Observe que isso se aplica principalmente a descritores que são claramente complementares mutuamente exclusivos e exatos. Ativo / Inativo se encaixa na conta. Alta tensão não, pois "não alta tensão" poderia, por exemplo, "baixa tensão" ou "baixa ou média tensão". Neste último caso, o argumento booleano obviamente não se aplica. No primeiro, ele faz.
Flater
2

Eu gosto de "set" / "clear", mas tenha cuidado com a ambiguidade no seu fraseado. Como Filip destaca , "definir a variável bool" pode significar escrever algum valor para a variável. Mas "definir a bandeira" é mais claro.


Terminologia relacionada: transformar um número 0 / diferente de zero em um valor 0/1 é chamado "booleanizing" .

Se você realmente usar o valor 0/1 como um número inteiro (em vez de verdadeiro / falso bool ), convém usar essa palavra. Caso contrário, provavelmente só surgirá se você estiver falando sobre o custo das operações que o compilador deve executar. (Ou se você estiver vetorizando manualmente com um SIMD compare para produzir todos os bits zero / todos um em cada elemento do vetor).

Em C e C ++, a boolpode implicitamente converter novamente em um número inteiro como 0 ou 1, e em implementações normais boolé armazenado como um valor de um byte que é 0 ou 1 (não apenas qualquer valor diferente de zero). O permite eficiente a && b, mas na prática muitos compiladores C perderam otimizações .


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

Essa função é compilada para várias instruções (não incluindo a ret) na maioria das arquiteturas. (MIPS é uma exceção interessante, tendo instruções de comparação em registro em vez de um registro de sinalizador / código de condição separado). no Godbolt compiler explorer para x86-64, MIPS e ARM thumb , podemos ver que a versão x86-64 é:

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

Desculpe este exemplo do que a booleanização é um pouco grande / fora de tópico!

Peter Cordes
fonte
0

Eu acho que "definido Foobarcomo verdadeiro" e "definido Foobarcomo falso" são diretos e sucintos. Não acredito que haja palavras individuais para essas frases, e quando você precisa ser técnico e preciso, às vezes é melhor estar disposto a ser um pouco prolixo do que arriscar confundir seu público.

Kevin - Restabelecer Monica
fonte
-1

"Configuração" é a maneira correta de descrever o ato de atribuir um valor a uma variável. Se você quisesse ser pedante, poderia chamá-lo de "atribuição", mas "definir" é muito prevalente. De fato, é Java idiomático escrever setFoobar()(e getFoobar()) métodos para executar a atribuição. C # leva um passo adiante com geteset definições de propriedade.

Com relação ao seu segundo ponto sobre o uso de "truthify" e "falseify" para "por implicação, diga aos meus ouvintes que estamos lidando com uma variável booleana", você já está dizendo aos ouvintes que a variável é booleana quando você diz:

Eu ajustei Foobarparatrue

Harrison Paine
fonte
1
O 'padrão' em Java para métodos que retornam propriedades booleanas é realmenteisFoobar()
JimmyJames
-1

Afirmar ou Recolher também pode ser usado, geralmente quando se fala de proposições em vez de variáveis ​​simples, por exemplo, no Prolog. Geralmente, existem termos diferentes, dependendo do que o booleano representa, em vez de um termo geral para todos os idiomas com valores booleanos (definir / limpar sinalizador ou bit, ativar / desativar dispositivo ou modo, afirmar / retirar proposta, provavelmente mais).

Pete Kirkham
fonte
Eu concordo com afirmar , exceto que para um programador que já significa algo diferente (por exemplo, lançando uma exceção se a expressão ainda não for verdadeira).
21318 ChrisW
@ Chrishr: Eu não sei o que você acha que as pessoas que programam o Prolog são senão programadores, mas ele foi usado no Prolog em 1972, por isso é a macro C que mudou o significado existente.
Pete Kirkham
-1

Para alterar o valor de um booleano de truepara falseou vice-versa é chamado negar .

Definir o valor de um booleano para falseé dito como falsificando o booleano. Eu o entenderia se você dissesse "verdade", no entanto, isso não parece certo. Não sei ao certo qual é o verbo para fazer algo true, então pode estar certo.

Eu esperaria que alguém com uma resposta melhor aparecesse antes que você começasse a usar o "truthify" à vontade.

Sir Wumpus IV
fonte
1
O problema aqui é que você pode usar os termos negar , falsificar , mas eu usaria alternar e redefinir / limpar respectivamente. De fato, até ler esta pergunta, nunca me deparei com falsificação . Talvez eu estou apenas começando embora idade e eu não estou em dia com termos da moda deste ano :)
David Arno
7
'falsificar' tem um significado no idioma inglês que realmente não se alinha ao seu uso para variáveis ​​booleanas; Se você me disser que está "falsificando" suas variáveis, eu posso entender o que você está tentando dizer, mas primeiro analizo isso enquanto você tenta me dizer que está mentindo sobre os valores que elas têm.
Cubic
1
Na OMI, o oposto de "falsificar" seria "afirmar", em inglês, mas isso ("afirmar") dá a impressão errada a um programador.
21318 ChrisW
-3

Um booleano é o equivalente a um interruptor elétrico SPST (pólo único, arremesso único): um é ligado ou desligado .

Nicholas Carey
fonte
2
"Ativar a donevariável" ou "A errorvariável está desativada" soa um pouco, pelo menos para mim. As alternativas sugeridas por outras respostas parecem mais prevalentes - "Defina a donevariável / bool / flag [como true]" ou "O errorsinalizador está limpo".
Sebi 05/05