Php 试图避免;意大利面代码“;,为什么倍数是坏的?

Php 试图避免;意大利面代码“;,为什么倍数是坏的?,php,coding-style,Php,Coding Style,我正在看报纸,看到了第4条,上面写着: if ($status == "awake"){ $actitivity = "Writing spaghetti code"; } else if ($healthstatus == "OK"){ $activity = "Sleep"; } else { print "CALL 911 IMMEDIATELY!"; } 我见过这种多重if-else模式。我有点困惑为什么会这样,即使它适用于这个例子 上面的例子不好是

我正在看报纸,看到了第4条,上面写着:

if ($status == "awake"){ 
    $actitivity = "Writing spaghetti code"; 
} else if ($healthstatus == "OK"){ 
    $activity = "Sleep"; 
} else { 
    print "CALL 911 IMMEDIATELY!"; 
}
我见过这种多重if-else模式。我有点困惑为什么会这样,即使它适用于这个例子

上面的例子不好是因为

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

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

  • 关于太多if/else的事情


编辑不必在意第二部分,因为嵌套条件和多个返回,这是不好的

在链接中,是因为

-逻辑中有
return
,这会中断流程,或者


-有太多的
if/else
堆积在一起…?

if/else
语句经常中断。(Java示例,但在PHP中也有效)

解决方案=>支持多态性

此外,多次分配临时变量确实容易出错,并降低可读性。尤其是在PHP中,因为它不是静态类型化语言。 事实上,如果有人首先分配
$activity=“编写意大利面代码”$activity=1。。。在同一容器内混合苹果和橙子。。看看这个:


此外,只有当其中一个条件得到验证时,逻辑才允许产生副作用(
print
)=>方法没有内聚性,因此违反了SRP。

最终,大部分可以归结为正式的计算机科学。啊,感谢链接!这是每个人都试图描述的一个非常清晰的模型。更多节点或更改->更复杂->更难阅读->意大利面。是的,就是这样。但它不仅难以阅读,也难以预测。每增加一个节点,代码块的维护和测试就会变得越来越困难。对于像我这样的人:
SRP声明每个对象都应该有一个单独的职责,并且该职责应该完全由类封装。
。SRP也适用于方法。。不仅仅是整个物体本身。您如何命名一个方法,该方法在一种情况下打印,在另一种情况下执行其他操作:
printproybe
。。倾向于使方法具有高内聚性是获得干净代码的最佳方法之一。在本例中,请拆分该方法。有关详细信息,请参阅:。显示的第二个图像中有一个错误(因为与第一个图像相同),但在相关的github中,有一个很好的示例:)