oop - 我们应该总是多态而不是枚举吗?

标签 oop enums polymorphism

看完之后:The Clean Code Talks -- Inheritance, Polymorphism, & Testing

我检查了我的代码,发现一些switch语句可以重构为多态性,但是我也注意到我仅将switch语句与枚举一起使用。这是否意味着枚举在OO设计中是“邪恶的”,应该通过多态性消除?

最佳答案

不是枚举是邪恶的,而是switch语句。在C++ FAQ Book中对此进行了很长的讨论,但要点是:除了有限的区域外-例如对从设备上的寄存器输入的数据的解释-大开关梳状表明您正在使用数据以区分子类型。取而代之的是,您应该只使用子类型,获得编译器的帮助以保持其正确性,并且还意味着当您(不可避免)更改案例集时,编译器将自动添加新案例。

关于oop - 我们应该总是多态而不是枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382000/

相关文章:

java - 在 Java 中避免 'instanceof'

mysql - 如何在 Yii 中为 ENUM 列实现 CGridView 表的过滤?

java - 返回基于多个变量的多态类

c++ - C++中的数据继承

c++ - 使用 dynamic_cast 而不是传统的多态有什么优势?

python - PyQt5 关闭事件方法

java - 我的java接口(interface)队列的thread.main问题,如何解决?

python - 如何解析包含相似数据的不同 JSON 模式?

ruby-on-rails - 使用枚举时修改 simple_form 输入中显示的文本

Java 8 使用枚举的方法