我刚刚阅读了top 100 signs of spaghetti code,我遇到了第4号,它只是说明了:
if ($status == "awake"){
$actitivity = "Writing spaghetti code";
} else if ($healthstatus == "OK"){
$activity = "Sleep";
} else {
print "CALL 911 IMMEDIATELY!";
}
我在other spaghetti discussions中看到过多个if-else模式。我有点困惑,为什么会这样,即使它适用于这个例子。
以上示例是否错误,因为
第一个变量是actitivity
,表示编码器需要一些睡眠,所以这是一个笑话,或者
视图不应在逻辑期间输出,或
过多的if / else
编辑从不介意第二部分,因为嵌套条件和多次返回,这很糟糕
在other spaghetti discussions链接中,这是不好的,因为
- 逻辑中有 return
,它打破了流程,或者
- 在彼此之上堆积了太多 if/else
......?
答案 0 :(得分:3)
If/else
语句经常会中断Open-closed principle。 (Java示例,但在PHP中也有效)
解决方案=>有利于多态性。
此外,多次分配临时变量确实容易出错并降低了可读性。特别是在PHP中,因为它不是静态类型的语言。
确实,如果有人先分配$actitivity = "Writing spaghetti code";
然后$actitivity = 1;
怎么办? ...在同一个容器内混合苹果和橘子..看看这个:http://sourcemaking.com/refactoring/split-temporary-variable
此外,仅当其中一个条件被验证时,逻辑才允许副作用(print
)=>方法没有凝聚力,因此违反了SRP。