我有相当复杂的if语句逻辑。我目前正在使用:C++嵌套如果语句可读性
if(numerical_evaluation) {
if ((!boolOne && boolTwo) || !boolThree){
//do stuff
}
}
其中boolOne,boolTwo和boolThree是逻辑运算(也许x < y
或 'myObject-> getBool' 等)。
我不知道一个更好的方法来使这个易于阅读,而不需要在第三个if
语句中嵌套||
条件。
我有困难的原因是or
运算符使得它看起来像第三个if
声明可能是有保证的。
一个选择就是做这个。
或者,我可以做类似
if(x <= y) {
bool boolFour = false;
if ((!boolOne && boolTwo))
boolFour = true;
if (boolFour || !boolThree){
//do stuff
}
}
甚至让一个单独的函数来尝试验证一切,或组合成一个单一的返回值?
或者,我可以尝试以这种方式重组代码,这可能需要大量的时间。
我的问题:什么是格式化复杂if
问题的最佳途径 - 这不仅仅包括if (!A && B && C)
变化更复杂的评价?当您将||
语句与&&
语句组合在一行中时,看起来事情变得无望而无法读取(特别是当您对boolOne,boolTwo等进行复杂评估时)。 - Best way to format if statement with multiple conditions也适用同样的原则吗?或者在使用各种逻辑运算符时存在根本差异?
这可能更适合[Programmers.SE](http://programmers.stackexchange.com/)。 – ildjarn
为什么无法读取?这是完全可读的... – ForEveR
这是主观的,可能会被关闭。就我个人而言,我喜欢将逻辑封装到描述函数中,所以最终的陈述就像'if(HasAccess()&& IsEditable()){...'。 – tenfour