ブール値を「true」、「false」、およびトグルする用語はありますか?[閉まっている]


23

技術会議でコードを説明しようとしているとしましょう。

まず、ブール値foobartrue

そして

次に、ブール値foobarfalse

少し冗長です。foobar切り替えられた場合、おそらく言うことができます、

第三に、トグル foobar

ここでの含意を通して、あなたはそのブール値を知っています。だから私はできるはずがない:

第四に、私はfoob​​ar を真理化する

そして

5番目に、foob​​ar を偽造します

また、暗黙のうちに、リスナーにブール変数を処理していることを伝えますか?これに適切な用語はありますか?ありがとう。


16
「foobarをtrue / falseに設定」はそれほど冗長ではありません。それは明らかです。「トグル」はリスナーにとってかなり明確です、IMO。
フィリップミロヴァーノヴィッチ

8
「まず、ブール値foobarをtrueに設定し、次に、ブール値foobarをfalseに設定します」。そもそもfalseに設定しただけではありませんか?;)
デビッドアルノ

2
私はいつもそれが反転と呼ばれていたと思ったが、どうやらそれはビットのための用語です、ないbools
e_i_pi

16
私は偽造を作成し、値をfalseに設定しないことに相当するものとしてfalsifyを読みました。
CodesInChaos

6
このような低レベルでコードを記述することを期待していますか?確かに誰かがそのような低レベルの説明を望んでいるなら、彼らはコードを読むだけでした。そのような用語を使用する理由は決してないと言っているわけではありませんが、まれになると思います。
18年

回答:


52
  • 値をtrueに設定すると、設定されます
  • falseに設定するとクリアされます。
  • 現在の値を変更すると、その値が切り替わります。

もちろん、trueに設定「falseに設定を使用することもできます。


10
値をクリアすることと値をfalseに設定することは相関しません。私にとってのクリアとは、真でも偽でもありません。
ピーターB

49
@PieterB:まあ、それはコンテキストに依存します。ブールフラグについて話している場合、フラグの「設定」と「クリア」はかなり一般的な用語です。
フィリップミロヴァーノヴィッチ

7
@FilipMilovanović変数のコンテキストでは、変数を設定することは、その変数に値を割り当てることを意味します。ブール変数のコンテキストでは、この値はtrueまたはfalseです。不思議に思うでしょう:ちょっと、変数を設定することは値を割り当てることを意味します...それがブール変数である場合を除き、実際に設定するときは、値を割り当てることを意味します: "true"
Pieter B

6
@PieterB「trueまたはfalseのいずれでもない」場合、それはバイナリブール値(単語を聞いたときにほとんどの人が考えるもの)ではなく、3進数のtrue / false / indeterminateである。そうは言っても、明確な用語はフラグに由来します。すべてのブール変数がフラグであるとは限らないため、用語は多くのユースケースに不適切です。
キュービック

7
@PieterB:はい-「bool変数を設定する」と言って、誰もがそれを「trueに設定する」ことを理解することを期待するのは奇妙です。しかし、フラグを表す場合、「フラグを設定する」は一般的に使用されるものであり、フラグを表すブール値をtrue(またはフラグを表すビットを1)に設定することを意味します。(PSしかしimmibisの答えはそれを考慮に入れていません。)
フィリップ

66

可能であれば、ブール値に焦点を当てるのではなく、ブール値が表すものを説明するようにしてください。いくつかの例:

  • サービス?started = true / falseの代わりにstart / stop
  • ゲームエンジンの特殊効果?オンオフ
  • 電気信号?セット/リセット
  • ...

このように、より自然な言葉で話します。したがって、会議では、「foobarを偽造してから偽造する」のではなく、「foobarを開始してから停止する」だけです(foobarが実際にサービスである場合)。

ブール値について本当に話す必要があるときは、「set / reset」、または「set to true」と「set to false」を使用できます。「トグル」は、すべてのコンテキストで非常にいいですね。

そして、もしあなたがブールショップで働いているなら(それが意味することなら何でも)、おそらく辞書が提供している以上の単語が必要です。その場合、真実化および改ざんは単にマイクロスピークの一部です。


16
同意する必要があります...ブール値は、あなたが本当に話していることをモデル化する実装です...そのため、代わりに話してください!
Maybe_Factor

2
ブール値をtrueに設定することについて話すのは好きではありません。変数の操作方法は初期化されていないため、基本的にはまだ使用できず、変数の設定(trueまたはfalse)は初期化です。常に真を意味するように設定すると、混乱が生じます。
ピーターB

1
また、この用語の使用はコードにも変換されます。常にではありませんが、多くの場合、組み込みブール型の代わりに2つの値の列挙型を使用する方が適切です。signal = HighVoltageまたはsignal = Active私見よりもはるかに明確ですsignal = true
キュービック

適切に名前が付けられたブール値のプロパティ/変数は、値に使用する名前を常にすぐに明らかにすることに注意してください。考えisStartedisActiveisCaseSensitivemockConnection、... @PieterB:私は部分的にあなたに同意。「ブール値の設定」は、本質的にtrueに設定することを意味しません。ただし、「isActiveフラグを設定」は、それをtrueに設定することを意味すると合理的に解釈できます。
18年

1
@キュービック:私は同意しません。将来の拡張はさておき、バイナリ列挙は不要のようです。signal = true確かではありませんが、使用する場合はを使用するsignal = ActiveこともできますisSignalActive = true。これは主に、明確に相互に排他的かつ完全に補完する記述子に適用されることに注意してください。アクティブ/非アクティブが法案に適合します。「高電圧ではない」とは「低電圧」を意味する場合もあれば、「低または中電圧」を意味する場合もあるため、HighVoltageはそうではありません。後者の場合、ブール引数は明らかに適用されません。前者では、そうです。
18年

2

私は「セット」/「クリア」が好きですが、フレージングの曖昧さに注意してください。フィリップが指摘する、「セットブール変数は、」変数に何らかの値を書き込むことを意味すると解釈することができます。しかし、「フラグの設定」はより明確です。


関連用語:0 /非ゼロの整数を0/1の値に変換することを「ブール化」と呼びますます。

実際に0/1の値を整数として使用する場合(true / falseではなく) bool使用する場合、その単語を使用することができます。そうでなければ、コンパイラが実行しなければならない操作のコストについて話している場合にのみ、おそらく出てくるでしょう。(または、SIMDを使用して手動でベクトル化して比較し、各ベクトル要素にすべてゼロ/すべて1のビットを生成する場合)。

CおよびC ++では、a boolは暗黙的に0または1の整数に変換し戻すことができ、通常の実装boolでは、0または1(ゼロ以外の値だけでなく)の1バイト値として格納されます。これにより効率的a && bですが、実際には多くのCコンパイラが最適化を逃しました


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

この関数はret、ほとんどのアーキテクチャで複数の命令(を含まない)にコンパイルされます。(MIPSは興味深い例外であり、個別のフラグ/条件コードレジスタの代わりにレジスタ内比較命令を使用しています)。 x86-64、MIPS、およびARM thumbのGodboltコンパイラエクスプローラーでは、x86-64バージョンは次のように表示されます。

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

申し訳ありませんが、このブール化の例は少し大きくなっています。


0

Foobartrueに設定」と「Foobarfalseに設定」は簡単で簡潔だと思います。これらのフレーズには個別の単語はないと思います。技術的で正確なものにする必要があるときは、視聴者を混乱させるリスクを冒すよりも、少し冗長にしたほうが良い場合があります。


-1

「設定」は、値を変数に割り当てる動作を説明する正しい方法です。あなたがそれについて熱心になりたいなら、あなたはそれを「割り当て」と呼ぶことができますが、「セット」は非常に普及しています。実際、割り当てを実行するメソッドを記述setFoobar()(およびgetFoobar())するのは慣用的なJava です。C#はさらに一歩進んでgetsetプロパティ定義を使用してます。

「truthify」と「falsify」を使用して「含意を通じて、ブール変数を処理していることをリスナーに伝える」ことについての2番目の点に関しては、次のように言うと、すでに変数がブールであることをリスナーに伝えています:

に設定Foobarしましたtrue


1
ブール型プロパティを返すメソッドのJavaの「標準」は、実際にはisFoobar()
-JimmyJames

-1

アサートまたはリトラクトも使用できます。最も頻繁に使用されるのは、Prologなどの単純な変数ではなく命題についてです。通常、ブール値を持つすべての言語に対する1つの一般的な用語(フラグまたはビットの設定/クリア、デバイスまたはモードの有効化/無効化、命題のアサート/リトラクトなど)ではなく、ブールの表現によって異なる用語があります。


私はassertに同意しますが、プログラマーにとってはすでに別の何かを意味していることを除きます(例えば、式がまだ真でない場合に例外をスローする)。
ChrisW

@ChrisW Prologをプログラミングする人がプログラマーでないとしたらどう思うかはわかりませんが、1972年にPrologで使用されていたので、既存の意味を変えたのはCマクロです。
ピートKirkham

-1

ブール値をtrueからfalse、またはその逆に変更することを否定と呼びますます。

ブール値をに設定することfalseは、ブール値を偽造することです。あなたが「真実化」と言ったなら、私はあなたを理解するでしょう、しかし、これは正しく聞こえません。何かを作るための動詞が何なのかわかりませんtrueので、それは正しいかもしれません。

「truthify」willy-nillyの使用を開始する前に、より良い回答のある人が来るのを待ちます。


1
ここでの問題は、negatingfalsifyingという用語を使用できることですが、トグルリセット / クリアをそれぞれ使用します。実際、この質問を読むまで、私はfalsifyに出くわすことはありませんでした。たぶん私は年をとったばかりで、今年のトレンディな条件については最新ではありません:)
デビッドアルノ

7
「falsify」は、英語ではブール変数の使用法と実際には一致しない意味を持ちます。あなたが変数を「偽造している」と私に言ったなら、私はあなたが言おうとしていることを理解するかもしれませんが、私あなたが変数の値について嘘をついていることを私に告げようとしているときにまずそれを解析します。
キュービック

1
IMOの「偽造」の反対は、英語では「アサート」ですが、それは(「アサート」)プログラマに間違った印象を与えます。
ChrisW

-3

ブール値は、SPST(単極、単投)電気スイッチに相当します:オンまたはオフにします。


2
done変数をオンにする」または「error変数をオフにする」両方とも、少なくとも私には少し聞こえます。他の回答で提案されている代替案は、より一般的であるように見えます-「done変数/ブール/フラグを[true]に設定する」、または「errorフラグがクリアされます。」
セビ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.