编写2布尔条件(4个分支)的最简洁方法

时间:2011-06-16 17:40:50

标签: refactoring

我有这个代码。 true_varother_true_var的值为boolean。四个条件分支是不同的。

if true_var && other_true_var:
    # do something 0
else if true_var && not other_true_var:
    # do something 1
else if not true_var && other_true_var:
    # do something else
else:
    # both are false, do a crazy thing

是否有“接受”的方式来写这个?我可以将所有条件转换为返回布尔值的方法,但这似乎超出了顶部。

4 个答案:

答案 0 :(得分:2)

我会按照以下方式进行最小数量的测试:

if (A)
{
  if (B) { // case 0 }
  else { // case 1 }
}
else
{
  if (B) { // something else }
  else { / crazy }
}

答案 1 :(得分:0)

这似乎是正确的。

它可以按任何顺序进行,但是这似乎是正确的方法

答案 2 :(得分:0)

如果某些分支体小,我更喜欢将它们放在顶部,这使代码更具可读性。如果有条件的“自然”顺序,请遵循该条款。

如果你真的关心速度,你可能想把最可能的分支放在最上面。

答案 3 :(得分:0)

所提供的代码并没有真正告诉我们关于布尔值及其语义的任何信息。鉴于两个无意义的任意独立布尔值,所提供的代码很好。

但我们都没有使用毫无意义的任意变量,或者至少我们都不应该这样做。有一个原因是& b导致一个代码路径,而& b导致另一个代码路径等等。对于& b来说,它是什么意思?说出来。与其他人一样。也许事实证明某些设置具有相关行为,您可以重新调整代码以反映这一点。

由于所提出的变量缺乏意义,我们无法真正回答所提出的问题。当有意义时,你可以做出有意义的选择。