试图避免“意大利面条式代码”,为什么多个 if-else 不好?

Ben*_*Ben 5 php coding-style

我只是在阅读意大利面代码前 100 个标志,我遇到了数字 4,它简单地说:

if ($status == "awake"){ 
    $actitivity = "Writing spaghetti code"; 
} else if ($healthstatus == "OK"){ 
    $activity = "Sleep"; 
} else { 
    print "CALL 911 IMMEDIATELY!"; 
}
Run Code Online (Sandbox Code Playgroud)

我在其他意大利面讨论中看到过这种多重 if-else 模式。我有点困惑为什么会这样,即使它适用于这个例子。

上面的例子不好是因为

  • 第一个变量actitivity表示编码器需要一些睡眠,所以这是一个笑话,或者

  • 在逻辑期间不应输出视图,或

  • 如果/否则太多的东西


编辑不要介意第二部分,因为嵌套条件和多次返回,这很糟糕

其他意大利面讨论链接中,是不是因为

- 逻辑return在其中,这打破了流程,或者

- 有太多if/else堆积在彼此之上......?

Mik*_*378 5

If/else声明常常违反开闭原则。(Java 示例,但在 PHP 中也有效)

解决方案 => 支持多态性。

此外,多次分配临时变量确实容易出错并降低可读性。特别是在 PHP 中,因为它不是静态类型语言。事实上,如果有人先分配$actitivity = "Writing spaghetti code";然后再分配怎么办$actitivity = 1;?...将苹果和橙子放在同一个容器中混合...看看这个: http: //sourcemaking.com/refactoring/split-temporary-variable

print此外,仅当条件之一得到验证 => 方法不内聚并因此违反 SRP 时,该逻辑才允许副作用 ( )。