哪种语法更正确?

时间:2015-01-13 04:22:39

标签: java syntax format

if (conditionA && conditionB) { return true; }

if (conditionA && !conditionB) { return false;}

**或**

if (conditionA) { 
    if (conditionB) { 
        return true;
    } 
    return false;
}

如有必要,可以提供更多背景信息吗?不同语言的不同之处是什么?一切都一样吗?

7 个答案:

答案 0 :(得分:3)

我建议:

if (condition A) {
    return conditionB;
}

我的理由如下:

  • 重复if (conditionA违反了“不要重复自己”#34;原理。如果您在一个地方更改它,则需要在两个地方进行更改
  • 当意图只返回第二个值时,
  • if (condition) return true else return false;似乎不必要地复杂。
  • 一般情况下,它似乎完全捕捉到您的意图:如果conditionA为true,则返回true或false,具体取决于conditionB

答案 1 :(得分:0)

return conditionA && conditionB;

答案 2 :(得分:0)

似乎所有都在逻辑上相同。

如果是在Java中,您可以进一步将它们缩短为return conditionA && conditionB

答案 3 :(得分:0)

我遵循的一条黄金法则是尽可能多地避免嵌套。但如果以使我的单一条件过于复杂为代价,我不介意将其嵌套。

除了你使用短路&&运营商。因此,如果布尔值为false,它甚至不会尝试匹配!

在这种情况下,您应该分两部分查看您的代码。

首先,检查第一个条件。如果这个条件为真,那么你需要根据conditionB做出另一个决定。

因此,后者是更好的选择,尽管我会重构如下:

if (conditionA) { 
    return conditionB;
}

答案 4 :(得分:0)

所有条件都相同

拿这个......

if (conditionA && conditionB) { return true; }

编译器只检查其他条件,并且只有在第一个条件为真时才会结束。

所以无论你使用哪种条件。编译器相应地优化它。

答案 5 :(得分:0)

让我们进行比较

if (conditionA && conditionB) { return true; }

if (conditionA && !conditionB) { return false;}

<强> VS

if (conditionA) { 
    if (conditionB) { 
        return true;
    } 
    return false;
}

性能明智的第一个代码很差,因为如果 if(conditionA&amp;&amp;&amp; conditionB)的第一个条件错误,编译器将检查第二个条件 if(conditionA&amp;&amp; ;!conditionB)

而在第二个代码中如果(conditionA)错误,编译器将不会检查任何其他条件,因此两个条件的输出在每个条件下相同但性能会有所不同

在所有这些条件下,如果conditionA在任何情况下都为假,则conditionA必须为真,那么我认为不需要检查条件b以及conditionA是否为true conditionBtrue为真,则返回false,如果conditionB为false,则返回if(conditionA){ conditionB } ,以便您也可以将其写为

{{1}}

答案 6 :(得分:-1)

(1)语法

if (conditionA && conditionB) { return true; }

if (conditionA && !conditionB) { return false;}

(2)语法

if (conditionA) { 

    //Only conditionA is true you can write more code and other logic here
    if (conditionB) { 
        return true;
    } 
    //conditionB is true or false, you can write more code and other logic here
    return false;
}

实际上这两个语法不相同。
至于你的标题问题,没有必要决定哪种语法在语法相同方面更正确?
因此,根据这些差异,您应该选择符合您逻辑的语法。
您的逻辑可能是答案,哪种语法更正确。