浅谈:重复的switch语句如何优化

前言

switch 语句是 Java 中用于多重条件判断的常见结构之一。然而,当我们在代码中遇到多个重复的 switch 语句时,会导致代码冗长、难以维护,并且效率低下。在本篇博客中,我将分享一些技巧和最佳实践,帮助您优化重复的 Switch 语句,提高 Java 代码的效率。

现象

switch 语句是根据类型代码进行的多分支选择语句,写出短小的 switch 语句很难;写出只做一件事的 switch 语句也很难,switch 语句天生要做很多事

常见的switch问题

  1. 每新增类型码的时候,都要增加 case 语句分支,导致分支越来越多,写出的函数不再短小简洁,违反了开闭原则
  2. 单个 case 分支中做了很多事,同样导致函数冗余,包含多个抽象层,违法单一原则
  3. 相同的 switch 语句分支分布在多个方法或类中,在新增类型代码的时候,必须找出所有的 switch 语句并修改,这样容易导致遗漏

解决办法

  1. 面向对象的语言:如果是面向对象的语言,大多数可以用多态替换多条 switch 语句
    a. 通过提取函数,将 switch 语句提取到一个函数中;
    b. 再通过搬移函数,将它移动到需要多态性的类中;
    c. 再通过子类策略中的一种取代类型码;
    d. 最后以多态取代表达式
  2. 面向过程的语言:
    a. 如果 case 语句超过五个,为了使代码更加整洁,可以考虑用表驱动的方式:我们可以将条件和相应的操作映射到一个数据结构中,例如 HashMap。这样一来,我们只需要在映射表中查找对应的操作,而不是使用多个 Switch 语句进行条件判断。这种方法能够提高代码的执行效率,并使代码更加简洁。
    b. 如果可以预见性的知道后期代码类型会不断新增,可以考虑用策略模式,将控制和处理分离,符合开闭原则

也不是所有的 switch 语句都要重构,有时候 switch 语句只在一个类中使用,就没必要使用了;减少 switch 语句出现 N : 1 : N 的情况:第一个 N 是 switch 的多个 case 分支,其中一个 case 分支里面又干了 N 件事情(调用 N 个函数),应该杜绝这种代码操作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值