重构坏味道:Switch惊悚现身
Switch Statement
症状
本来开心的想要添加或者修改现有功能突然发现代码不知道从何下手,因为可能很多处switch 或者很多 if 关键字 ,你必须要搞明白哪个分支以及改之后的影响范围以及会不会影响其它的分支。病因
文章图片
Switch Statement
项目之初程序员往往都是如何简单如何写,在有分支逻辑的时候确实switch or if 这种方式是最快速且便捷的,但是随着程序功能的不断迭代,代码却没有跟上(一个分支可能拥有着一种对象的概念),导致后面功能又会出现新的switch,又或者switch分支的逻辑越写越多,越写越复杂.导致的健康问题
如果想添加或者修改原有功能,由于逻辑在分支里,往往改一个地方不慎有可能会破坏其它的分支,又或者改了一个地方发现还有其它地方忘记了。这样的话无形中增加了维护成本,以及提高了BUG的发生的概率.治疗
康复
- 如果看到一个条件表达式,它根据类型的不同而选择不同的行为。
尝试运用 Replace Conditional with Polymorphism 让这些行为封装到自己的条件对象中
IntelliJ IDEA 练习视频
- 有个类型码,它会影响行为,但你无法通过继承的方式消除它,或者类型码的数值在对象的生命周期中发生变化。
尝试运用 Replace Type Code with State/Strategy (以状态/策略取代类型码) 让这些行为封装到自己的条件对象中
IntelliJ IDEA 练习视频
【重构坏味道:Switch惊悚现身】当我想控制浴缸,我就直接去拧浴缸的开关了,而不需要在一个统一的控制中心中找到哪个是浴缸的开关。
什么情况不治疗
文章图片
Switch Statement After Refactoring
- 当Switch控制的是很简单的逻辑。
- 有些设计模式必须存在Switch的例如工厂模式(Factory),抽象工厂模式(Abstract Factory)。
推荐阅读
- 我从来不做坏事
- 唱歌教学(导致嗓音损坏的几个常见的错误唱歌方法!)
- 复制阳光
- 窝在家里,你闷坏了吗(了解这12个假设,给自己的心理增加免疫力)
- 初夏的味道
- 初恋的味道
- 2018-12-03-新手教程重构思路
- 日常发圈文案
- 一碗有味道的豚骨拉面
- 吃坏东西的影响