为了账号安全,请及时绑定邮箱和手机立即绑定

消除代码切换的方法

消除代码切换的方法

猛跑小猪 2019-07-15 09:26:06
消除代码切换的方法有什么方法可以消除代码中开关的使用?
查看完整描述

3 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

开关-语句本身并不是反模式,但是如果您是面向对象的编码,则应该考虑是否更好地解决了开关的使用问题。多态而不是使用开关语句。

通过多态性,这个:

foreach (var animal in zoo) {
    switch (typeof(animal)) {
        case "dog":
            echo animal.bark();
            break;

        case "cat":
            echo animal.meow();
            break;
    }
}

变成这样:

foreach (var animal in zoo) {
    echo animal.speak();
}


查看完整回答
反对 回复 2019-07-15
?
MMTTMM

TA贡献1869条经验 获得超4个赞

开关是一种模式,不管是用Switch语句实现,如果是其他链、查找表、OOP多态性、模式匹配或其他什么东西。

您想取消使用开关语句“或”开关模式“?第一种可以消除,第二种只有在可以使用另一种模式/算法的情况下才能消除,而且在大多数情况下,这是不可能的,或者这不是一种更好的方法。

如果要消除开关语句根据代码,首先要问的问题是删除开关语句有什么意义?并使用其他技巧。不幸的是,这个问题的答案是特定领域的。

请记住,编译器可以进行各种优化以切换语句。因此,例如,如果您想要高效地进行消息处理,那么切换语句是很好的选择。但是另一方面,运行基于Switch语句的业务规则可能不是最好的方法,应用程序应该重新构建。

以下是开关语句的一些替代方案:


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 554 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信