消除代码切换的方法

消除代码切换的方法

有什么方法可以消除代码中开关的使用?



猛跑小猪
浏览 555回答 3
3回答

互换的青春

开关-语句本身并不是反模式,但是如果您是面向对象的编码,则应该考虑是否更好地解决了开关的使用问题。多态而不是使用开关语句。通过多态性,这个: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(); }

MMTTMM

开关是一种模式,不管是用Switch语句实现,如果是其他链、查找表、OOP多态性、模式匹配或其他什么东西。您想取消使用开关语句“或”开关模式“?第一种可以消除,第二种只有在可以使用另一种模式/算法的情况下才能消除,而且在大多数情况下,这是不可能的,或者这不是一种更好的方法。如果要消除开关语句根据代码,首先要问的问题是删除开关语句有什么意义?并使用其他技巧。不幸的是,这个问题的答案是特定领域的。请记住,编译器可以进行各种优化以切换语句。因此,例如,如果您想要高效地进行消息处理,那么切换语句是很好的选择。但是另一方面,运行基于Switch语句的业务规则可能不是最好的方法,应用程序应该重新构建。以下是开关语句的一些替代方案:查表多态模式匹配(特别用于函数式编程、C+模板)
打开App,查看更多内容
随时随地看视频慕课网APP