布尔逻辑:如何简化此 IF 语句?

Posted

技术标签:

【中文标题】布尔逻辑:如何简化此 IF 语句?【英文标题】:Boolean Logic: How can I simplify this IF statement? 【发布时间】:2011-09-30 03:39:02 【问题描述】:

我继承了一些代码,其中包含我希望尽可能减少的 IF 语句。 它本质上是一个简单的 IF (A or B) THEN。但它变得棘手,因为 A 和 B 是其他表达式的概括。

问题:如果可能,我如何用更简单的术语重新表达这一点?

这是原始的 IF 语句.... 为清楚起见,我用括号和大括号代替了括号。

IF (  W & X & Y & Z  or   C & D & [ ( F & G) or (H & G) or (F & J) ]  )
/* Comment: For what it's worth: (Z = not c) */

【问题讨论】:

【参考方案1】:

从逻辑的角度来看,你不能。没有重复的变量(Z = ¬C 没有多大帮助)并且由于嵌套的正常形式会比这更长。这似乎很短。

从编程的角度来看,如果绝对最大速度不如可读性重要(或者你有一个不错的编译器),我会以一种使决策结构更清晰的方式重新组合它们(其中哪些与(程序执行)逻辑观点?),即使这重复检查某些变量(假设这些不是函数调用)。我还将其拆分为几个单独的定义,并仅将结果合并到 if 中。

【讨论】:

.@nobody:感谢您的关注。幸运的是,这些都不是函数调用,速度也不是优先事项。我只是添加了一些简单的英语 cmets 来解释逻辑,然后就不用管了。

以上是关于布尔逻辑:如何简化此 IF 语句?的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟笔记四逻辑语句

我怎样才能简化这个逻辑

JavaSe 程序逻辑控制

逻辑分支

布尔逻辑 - 简化产品的总和

Select 语句中的布尔逻辑