我有这个代码。 true_var
和other_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
是否有“接受”的方式来写这个?我可以将所有条件转换为返回布尔值的方法,但这似乎超出了顶部。
答案 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来说,它是什么意思?说出来。与其他人一样。也许事实证明某些设置具有相关行为,您可以重新调整代码以反映这一点。
由于所提出的变量缺乏意义,我们无法真正回答所提出的问题。当有意义时,你可以做出有意义的选择。