巧用枚举消除条件判断

简介: `shigen`是一位致力于撰写博客文章的作者,记录个人成长历程,分享真知灼见,并捕捉生活中的感动瞬间。在其最新文章中,通过枚举的方式展示了如何优雅地消除if-else判断,提供了一种更为简洁清晰的代码实现方案。利用自定义的`QuestionHandlerEnum`枚举类,实现了不同情况下的逻辑处理,展示了此方法在提升代码可读性和内聚性上的优势。与`shigen`一同探索编程之美,让每一天都有所进步。个人IP:shigen。

shigen坚持更新文章的博客写手,记录成长,分享认知,留住感动。个人IP:shigen

在上一篇的文章结合HashMap与Java 8的Function和Optional消除ifelse判断中有讲到如何结合HashMap与Java 8的Function和Optional消除ifelse判断,相关的文章可以点击链接查看,这里做一些小小的改造,将不同的处理方式抽成一个方法,最终的代码是这样的:

改造之后的代码

是不是看起来更加规范和清晰了。今天讲的就是通过枚举实现if-else的消除,先上代码:

  • 定义的枚举类
    public enum QuestionHandlerEnum {
   
        A() {
   
            @Override
            String handle(String detail) {
   
                return handleQuestionA(detail);
            }
        },
        B() {
   
            @Override
            String handle(String detail) {
   
                return handleQuestionB(detail);
            }
        },
        C() {
   
            @Override
            String handle(String detail) {
   
                return handleQuestionC(detail);
            }
        },
        ;

        abstract String handle(String detail);

        public static String handleQuestionV3(String type, String detail) {
   
            return Optional.of(QuestionHandlerEnum.valueOf(type)).map(handlerEnum -> handlerEnum.handle(detail)).orElseThrow(() -> new IllegalArgumentException("invalid type: " + type));
        }
    }
  • 测试一下
assert QuestionHandlerEnum.handleQuestionV3("B", "detail").equals("call methodB to handledetail");

没错,就是这种写法,这么的简单。

这是看的阿里大佬的写法,将方法内聚在抽象方法和枚举中,大大简化代码,提升功能的统一和内聚。

这种写法在实际的开发中,相信大家也很少用到,但是也有对应的场景的,shigen当时看到这种写法也是看大佬们给出的实现加减乘除的案例中学到的。

最后附上代码截图:

枚举类消除if-else代码截图

与shigen一起,每天不一样!

目录
相关文章
|
算法 Unix 编译器
C语言表驱动法编程实践(精华帖,建议收藏并实践)
C语言表驱动法编程实践(精华帖,建议收藏并实践)
315 0
|
IDE 调度 开发工具
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
如何在S32DS中使用SystemView分析FreeRTOS
|
XML Java 测试技术
通义灵码与githubcopilot的对比评测
本文评测了通义灵码,与github copilot在一些代码编写能力上面的能力比较。 虽然github copilot要强很多,但灵码目前的能力也不算很弱,并且在一些小类上会做的更好一些。 值得试试看,也是免费的
58428 10
VSPD虚拟串口软件安装及使用
VSPD虚拟串口软件安装及使用
4064 0
|
11月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
862 6
|
敏捷开发 数据可视化 BI
配置状态报告是什么?包括哪些编制步骤?需要注意哪些关键环节?
配置状态报告(CSR)是项目管理和系统开发中用于跟踪和记录项目配置项状态的重要工具,涵盖软件、硬件、文档等。它不仅提供项目当前状态、历史变更及发展趋势的清晰视图,还通过增强项目透明度、有效管理变更、支持决策制定和促进知识共享,帮助项目团队做出明智决策,确保项目按计划顺利进行。随着项目规模和复杂度的增加,CSR的重要性愈发凸显,现代项目管理工具已实现其编制和管理的自动化与智能化。
|
Java Docker 微服务
SpringBoot微服务打包Docker镜像
SpringBoot微服务打包Docker镜像
705 11
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
961 1
|
存储 传感器 缓存
面向嵌入式系统的轻量级框架分析
面向嵌入式系统的轻量级框架分析
300 1