IF语句重构的理论?

Theory for IF statement refactoring?

提问人:Sevio Wizatti 提问时间:8/17/2021 最后编辑:Sevio Wizatti 更新时间:8/17/2021 访问量:119

问:

有一些已知的规则,它们指的是 IF 语句的各种组合(或 if/else 或 switch/case 语句等)。这些规则可用于重构。

示例 1: “具有单个实体的嵌套 IF 始终可以替换为一个具有 AND 条件的 IF。”

if (a) {
  if (b) {
     doSomething();
  }
}

可以改写为:

if (a && b) {
  doSomething();
}

示例 2: “具有相同主体的后续 IF 始终可以替换为一个具有 OR 条件的 IF。”

int i = 0;
if (a) {i = 1;}
if (b) {i = 1;}

可以改写为:

if (a || b) {i = 1;}

我相信还有更多类似的规则。我想知道这背后是否有一个已知的理论,它给出了创建此类规则的通用模式。我想查看其他已知规则的列表。我认为布尔代数并不能完全处理这个问题,因为它使用的数学语法并不能完全转换为编程语法。

有类似的问题,总是问一个或另一个规则。这个问题完全是通用的,不是关于特定的规则,而是关于它们背后的理论。

if-语句 逻辑 布尔运算布尔代

评论

1赞 User1000547 8/17/2021
1) 示例 2 中的代码样本等价 - 如果 a 和 b 都为真,则在第一个示例中将调用两次,在第二个示例中将调用一次 2) 唯一想到的是德摩根定律,但这是您正在寻找的一个非常有限的子集doSomething
1赞 phuzi 8/17/2021
考虑看看布尔代数,这将使德摩根定理
0赞 Sevio Wizatti 8/17/2021
更新了第二个示例,因为调用 doSomething() 两次的副作用,这不是重点。

答: 暂无答案