language-agnostic - 两个 bool 值的理想 If 语句结构

标签 language-agnostic if-statement logic

我不太确定要搜索什么 - 但如果可能的话,我正在寻找一种优雅的方式来构建 if 语句,该语句使用两个 bool 值,可以轻松输出所有四种可能性。

变量:

bool a = true;
bool b = true;

我不确定在检查两者是否存在负面影响方面是否有最佳实践 - 然后继续等等。

很草率写的例子:
if(!a && !b)
{
   //Output (-,-)
}
else
{
   if(a || b)
   {
       if(a)
       {
           //Output (+,-)
       }
       else
       {
           //Output (-,+)
       }
   }
   else
   {
       //Output (+,+)
   }
}

对不起所有的鸥翼 ( { } ) 我有点格式化迷。无论如何 - 感谢您的任何建议!

最佳答案

这取决于你如何定义优雅。

所以我将采用我自己的定义:

  • 对称。
  • 可读。
  • 避免不必要的复杂性。

  • 考虑到这一点,我只想:
    if( a ) {
      if( b ) {
         ...
      } else {
         ...
      }
    } else {
      if( b ) {
         ...
      } else {
         ...
      }
    }
    

    它并不比您的想法更冗长,但至少它的含义非常清楚。

    话虽如此,我发现像这样的控制结构非常可疑。您可能可以:
  • 如果您所做的只是为变量赋值,则使用(二维)常量数组来获取值。
  • 重述整个块以避免重复调用类似的代码。也许将其中一项检查分解为一个函数。
  • 您可能根本不需要两个单独的 bool 值,具有 4 个可能值的单个变量会更具表现力,然后您可以使用 switch/case 结构。
  • 关于language-agnostic - 两个 bool 值的理想 If 语句结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5318686/

    相关文章:

    math - 可以将具有多个模运算符 (a % b % c) 的表达式简化为其他内容吗?

    language-agnostic - 我怎么知道某件事需要多少天?

    python - 通过 if 条件将 pandas 数据框的值附加到列表

    language-agnostic - 如何重现这种半随机像素背景?

    algorithm - 将递增整数范围映射到以 26 为基数的六位数最大值,但不可预测

    Python迭代不进入if-elif

    javascript - 使用由日期触发的 style.display

    Java 对 Tic Tac Toe 程序没有意义

    boolean - 逻辑表达式的基本恒等式以及从真值表推导出逻辑表达式?

    c# - 这个按位表达式有更好的逻辑吗?