我从一个程序中得到一些特殊的输出,其中我有一些这样的 if 语句:
if((m.getLeft(position).state == position.state.wall || m.getLeft(position).state == position.state.border)
&& (m.getBelow(position).state == position.state.open || m.getBelow(position).state == position.state.visited)){
check = true;
}
我有 && 和 || 在相同的 if 条件下使用。如果 getLeft() 处的单元格是墙或边框并且 getBelow() 处的单元格是打开的或已访问,我希望布尔检查为真。
这段代码,我现在写的方式,是否正确地执行了这个检查?也许更重要的是,写这样的声明是不是很糟糕?把它分成两个陈述会更好吗?
我不确定我所看到的特殊性是由这些陈述还是其他原因引起的,我的问题更多是关于一般最佳实践。
编辑:感谢所有输入。我也有同样的怀疑(它太复杂了),这就是为什么我以我的方式提出我的问题。
编辑(一年后,回首往事)(更努力地重申以上内容)为了上帝的爱,不要写任何类似上述if
声明的东西。如果您发现自己有类似的代码行,请记住occam 的剃刀可能比编程更适用。