【问题标题】:Proper way to evaluate booleans in if else statements在 if else 语句中评估布尔值的正确方法
【发布时间】:2017-08-02 23:52:38
【问题描述】:

如果这已在某处得到回答,请提前抱歉,但我确实环顾了一段时间,但没有找到任何东西。

我正在使用 Objective-C 进行编码,但这主要是一个一般性的编码问题。我基本上想知道是否有一种适当的、专业的方式来编写涉及布尔值的 if else 语句。具体来说,我想知道是否

  1. 对于涉及布尔值的 if else 语句的排序,有一种“最快”“最佳”的编码实践
  2. 有没有更美观的书写方式?

例如,我想了解以下三种不同的方式

方法一

if (myBool)
{
    //Do something
}
else
{
    //Do something else
}

方法二

if (myBool)
{
    //Do something
}
else if (!myBool)
{
    //Do something else
}

方法3

if (myBool)
{
    //Do something
}
if (!myBool)
{
    //Do something else
}

我知道这听起来有点愚蠢,而且确实在强调微妙的细节。在代码可读性方面,我主要想知道这些不同的方法。就可读性而言,似乎 method 2/3 对我来说是最好的。这允许您搜索该变量的特定情况,这在大文件中可能更容易。也许这是一个小问题,但实际上并不重要。

方法 1 对我来说似乎是最常见的,也是我默认选择的。但是对于更有经验的编码人员,是否有特定的方法可以做到这一点,或者只是偏好?

【问题讨论】:

  • 如果您使用 bool,则应不惜一切代价避免使用 2 和 3。用户方法 1 始终。

标签: objective-c if-statement boolean


【解决方案1】:

对于非常简单的任务来说,一个简洁的 if/else 方法

int num;
if (isNegative) {
    num = -1;
} else {
    num = 1;
}

短手是:

int num = isNegative ? -1 : 1;    //   -->   condition ? true : false

对于复杂的条件/任务,我不建议这样做,因为这可能会变得混乱。但我发现它对于压缩非常简单的 if/else 分配很有用。

【讨论】:

    【解决方案2】:

    我认为 Method1 也很常见且有效。
    1. 在method3中,如果myBool为真,则不需要检查第二个if条件。
    2.在method2中不需要第二个if,因为bool只有2个值,要么是/真,要么是/假。如果只有 2 个以上的情况,请使用 else。
    3.当你使用if else或者if else if时,你应该根据概率提供条件。表示最满足的条件必须放在首位。

    【讨论】:

      【解决方案3】:

      要考虑的一件事是您期望的值。

      在这种情况下,布尔值只有 两个 可能的值,因此如果我们使用方法 1 作为最“方便”的方式是有意义的。

      当您要检查超过 2 个可能的值时,方法 2 有效。

      另一方面,当 myBool 的值可能在第一个 [if] 条件之后发生变化时,方法 3 很方便。

      【讨论】:

        【解决方案4】:

        1.对于涉及布尔值的 if else 语句的排序,有一种“最快”“最佳”的编码实践

        “把你通常期望处理的情况放在第一位。这符合将决策产生的代码尽可能靠近决策的一般原则……[将正常情况放在 if 之后] puts专注于阅读主要流程而不是涉足异常情况,因此代码整体更易于阅读。”

        Code Complete,第 2 版,第 356-357 页。

        2.有没有更美观的书写方式?

        在正常的逻辑流程中最好使用方法1

        【讨论】:

        • 您的报价适用于所有选项……
        猜你喜欢
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多