前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >三种方式,教你优雅的替换if-else语句!

三种方式,教你优雅的替换if-else语句!

作者头像
路人甲Java
发布于 2021-08-20 09:19:11
发布于 2021-08-20 09:19:11
1.1K0
举报
文章被收录于专栏:路人甲Java路人甲Java

来源:love1024.blog.csdn.net/article/details/104955363

场景

日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!

本文将介绍三板斧手段:

  • 优先判断条件,条件不满足的,逻辑及时中断返回;
  • 融入策略模式;
  • 策略模式+工厂+单例模式,锦上添花;

接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根据用户购买的价格包赋予用户对应的权益(VIP视频会员天数+抽奖机会次数)。

我的天,太多if-else了……(看不清楚可以点击图片放大)

1.优先判断条件,不满足及时中断

这点非常容易理解,就是说在业务逻辑里面,先把不符合条件的给先过滤掉,而不是层层嵌套if-else判断,结合代码图看一下:

2.策略模式改造

先用策略模式替换掉文章开头讲到的,用户充值后根据价格包(付的多少钱)给用户增加VIP天数及抽检机会次数的逻辑,我这里就简化成"根据-价格包区分给用户增加不同的体育会员视频VIP天数"这个动作来讲解:

表面上看,代码稍微优雅了点,但是还是没和if-else彻底说拜拜,且recharge()充值方法可单独拎出来,只需要根据priceCode实例化不同的策略对象即可:

3.策略模式+工厂+单例模式,锦上添花

接下来使用"工厂类+单例"来给代码加点料:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 路人甲Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
在之前文章说到,简单 if-else,可以使用 卫语句 进行优化。但是在实际开发中,往往不是简单 if-else 结构,我们通常会不经意间写下如下代码:
用户1516716
2020/02/20
8450
8种优化if-else代码的方案请拿走
代码中如果if-else比较多,阅读起来比较困难,维护起来也比较困难,很容易出bug,接下来,本文将介绍优化if-else代码的八种方案。
用户4172423
2020/03/12
1.4K0
公司系统if-else语句太多了,我用设计模式消除了if-else
你在平时开发中肯定有使用if-else语句的时候,然而大量的if-else语句不利于代码阅读,影响代码复杂度。反正我在消除Sonar异味的时候头疼过。
Lvshen
2022/05/05
5520
公司系统if-else语句太多了,我用设计模式消除了if-else
if-else泛滥成灾?这样优雅去掉后更简洁了!【粉丝答疑】
前段时间,和大家分享了一个关于如何优雅使用if-else的文章,之后陆陆续续好几个小伙伴微信给我留言聊最后那一段,说没有看明白,那么今天就来针对性的整理一下;答应粉丝的事情,必须得完成的。
一行Java
2022/04/07
5800
if-else泛滥成灾?这样优雅去掉后更简洁了!【粉丝答疑】
函数式接口和lambda表达式优雅的替换大量的if-else
随着条件的增多,if-else块会变得越来越臃肿,维护起来也变得困难。这就是我们需要一种更优雅的替代方法的地方。
一只牛博
2025/05/31
520
业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们!
对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else。
Java3y
2019/10/24
6420
业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们!
策略+枚举 优雅的解决 if-else
想起刚开始接触JAVA面向对象编程时,若遇到大量流程判断语句,几乎满屏都是if-else语句,多得让自己都忘了哪里是头,哪里是尾,但是,纵然满屏是if-else,但彼时也没有觉得多别扭。等到编程能力渐渐提升之后,再回过头去看曾经写过的满屏if-else时,脑海里只有一个画面,全都是翔.....
码猿技术专栏
2023/05/01
4760
策略+枚举 优雅的解决 if-else
SpringBoot 中优化 if-else 语句的七种方法实战
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在我的博客中,我主要分享技术教程、Bug解决方案、开发工具指南、前沿科技资讯、产品评测、使用体验、优点推广和横向对比评测等内容。今天,我们将深入探讨如何在 SpringBoot 中优化 if-else 语句。随着代码复杂性的增加,传统的 if-else 语句往往会导致代码难以维护和扩展。本文将介绍七种优化 if-else 语句的实战方法,包括策略模式、枚举与策略模式结合、多态性、Lambda 表达式与函数接口、状态模式、命令模式以及保护子句,帮助你提高代码的可读性和扩展性。💡✨
默 语
2024/11/22
2800
Java | if-else代码优化方案
如果if-else代码块包含return语句,可以考虑通过提前return,把多余else⼲掉,使代码更加优雅。
Java小技巧
2022/05/23
5890
漫话:如何给女朋友解释什么是策略模式?
周末无事,窝在家里面看《权力的游戏第八季》,看的很是津津有味,虽然感觉有一点点要烂尾,但是我还是忍不住要去看到底谁可以坐上铁王座。
Java识堂
2019/06/19
4940
漫话:如何给女朋友解释什么是策略模式?
Java优化_解决if嵌套过多
彻底消灭if-else嵌套 设计模式-策略模式 如何干掉 Spring Boot 中大片的 if else? 业务代码中, if else 使用策略模式优化 设计模式 策略模式 极简策略模式 (妙用枚举) 责任链模式+策略模式
全栈程序员站长
2022/09/29
2.1K0
if-else“烦不烦”,让代码简单、高效、优雅起来
if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到想吃
IT大咖说
2020/05/19
9710
if-else“烦不烦”,让代码简单、高效、优雅起来
SpringBoot中优化if-else语句的七种方法实战
策略模式允许在运行时选择算法的行为。它通过将算法定义成独立的类,并在运行时动态选择使用哪个算法,来避免使用多个if-else或switch语句。
公众号:码到三十五
2024/08/06
1700
if-else 判断语句过多该如何处理?
我们平时在写代码的时候,if-else判断语句基本上必不可少,当我们的判断语句只有一两层的时候,类似下面这种,情况还好,基本上能接受;
Java极客技术
2022/12/04
6290
14.策略者模式设计思想
策略模式是一种行为型设计模式,用于定义一系列可互换的算法,并使它们可以独立于使用它们的客户端而变化。本文档详细介绍了策略模式的基础概念、原理、结构及应用案例,包括折扣计算、文件排序等实际场景,帮助读者深入理解策略模式的实现和优势。此外,并提供了相关代码示例。适合初学者和有一定经验的开发者参考。
杨充
2024/11/14
1750
防御性编程失败,我开始优化我写的多重 if-else 代码
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/01/05
2670
设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用
工厂模式又叫做工厂方法模式,是一种创建型设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
归思君
2023/10/16
2.9K0
设计模式学习笔记(二)工厂模式、模板模式和策略模式的混合使用
每个 C# 开发人员都应该掌握的 5 种强大的设计模式
想象一下你正在建造一栋房子。你是更愿意使用来自专业建筑师那些经过实践检验的蓝图呢,还是从头开始绘制所有的设计图呢?软件开发也是同样的道理!设计模式是针对常见问题的经实践验证的解决方案,它们提供了清晰的蓝图,能让你的代码更高效、更可复用且更易于维护。
郑子铭
2025/02/20
1570
每个 C# 开发人员都应该掌握的 5 种强大的设计模式
设计模式学习之策略模式
**定义:**策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。
老马的编程之旅
2022/06/22
2050
设计模式学习之策略模式
满屏的if-else,看我怎么消灭你!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/21
1K0
推荐阅读
相关推荐
解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档