加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 试图避免“意大利面条代码”,为什么多重if-else坏?

发布时间:2021-08-28 03:47:15 所属栏目:大数据 来源: https://www.jb51.cc
导读:我刚刚阅读了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!"; } 我在oth

我刚刚阅读了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,表示编码器需要一些睡眠,所以这是一个笑话,或者
>逻辑期间不应输出视图,或
>如果/其他太多了

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

在other spaghetti discussions链接中,是不是因为

– 逻辑已经返回,它打破了流量,或

– 有太多的if / else堆在彼此之上……?

解决方法:

如果/ else语句经常中断Open-closed principle.(Java示例但在PHP中也有效)

解决方案=>有利于多态性.

此外,多次分配临时变量确实容易出错并降低可读性.特别是在PHP中,因为它不是静态类型的语言.
事实上,如果有人首先分配$actitivity =“写意大利面条代码”,该怎么办?然后$actitivity = 1; ?? …在同一个容器内混合苹果和橘子..看看这个:http://sourcemaking.com/refactoring/split-temporary-variable

此外,该逻辑仅在其中一个条件被验证时允许副作用(打印)=>方法不具有凝聚力,因此违反了SRP.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读