0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不会有人不知道怎么优雅的替换if-else语句吧

5jek_harmonyos 来源:CSDN 作者:饭一碗 2021-07-28 15:46 次阅读

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

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

优先判断条件,条件不满足的,逻辑及时中断返回;

融入策略模式;

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

接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根据用户购买的价格包赋予用户对应的权益(VIP视频会员天数+抽奖机会次数)。我的天,太多if-else了……(看不清楚可以点击图片放大)

b20b1b9e-ecdb-11eb-a97a-12bb97331649.png

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

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

b493bb28-ecdb-11eb-a97a-12bb97331649.png

b51b978c-ecdb-11eb-a97a-12bb97331649.png

2.策略模式改造

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

b52a462e-ecdb-11eb-a97a-12bb97331649.png

b83ace38-ecdb-11eb-a97a-12bb97331649.png

b8500ce4-ecdb-11eb-a97a-12bb97331649.png

b85e8ff8-ecdb-11eb-a97a-12bb97331649.png

b87995dc-ecdb-11eb-a97a-12bb97331649.png

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

b898b7d2-ecdb-11eb-a97a-12bb97331649.png

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

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

b8a4a240-ecdb-11eb-a97a-12bb97331649.png

b8d5258c-ecdb-11eb-a97a-12bb97331649.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发
    +关注

    关注

    0

    文章

    366

    浏览量

    40807

原文标题:三种方式,教你优雅的替换if-else语句!

文章出处:【微信号:harmonyos_developer,微信公众号:harmonyos_developer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于陶瓷电路板你不知道的事

    陶瓷电路板(Ceramic Circuit Board),又称陶瓷基板,是一种以陶瓷材料为基体,通过精密的制造工艺在表面形成电路图形的高技术产品,快来看看哪些是您还不知道的事?
    的头像 发表于 10-21 11:55 172次阅读
    关于陶瓷电路板你<b class='flag-5'>不知道</b>的事

    请问TPA3116D2/TPA3110D2/TPA3113D2直接用24V供电会不会有被烧掉的危险?

    请问一下,TI的D类功放,都写的电压范围为26V,我直接用24V供电会不会有被烧掉的危险?之前使用一个国产芯片仿3110的。标的电压是16V,用12V老是烧。TI的芯片不知道不会有类似问题。标26V的直接上24V是否安全!
    发表于 10-15 08:17

    应该不会有人不知道双法兰液位变送器的安装说明

    变送器
    jzyb
    发布于 :2024年09月18日 09:51:07

    差分仪表运放的电阻电容混接会不会有问题?

    我的电路如上图所示,输入端由外部接入,不接时就是悬空。 1)两个1M电阻用于输入悬空时保证输出为0附近; 2)电容用作滤波退藕。 请问电阻电容这么混接会不会有问题,例如振荡啥的?(外部输入信号为直流。)
    发表于 09-10 08:23

    ESP32会不会有多线程问题,需要加锁吗?

    ESP32会不会有多线程问题,需要加锁吗
    发表于 07-19 08:05

    不会吧有人不知道压力表的工作原理!

    压力表
    jzyb
    发布于 :2024年07月01日 10:15:19

    不会吧!热电偶是什么还有人不知道

    热电偶
    华泰天科
    发布于 :2024年06月29日 11:04:50

    不会吧! 还有人不知道电磁流量计的安装方式

    电磁流量计
    华泰天科
    发布于 :2024年06月13日 09:17:58

    不会吧有人不知道超声波流量计的注意事项

    流量计
    华泰天科
    发布于 :2024年06月06日 10:24:01

    大无语事件!还有人不知道什么是电容料位计

    料位计
    jzyb
    发布于 :2024年05月24日 10:46:14

    辊压机轴承位磨损修复你不知道的那些事

    电子发烧友网站提供《辊压机轴承位磨损修复你不知道的那些事.docx》资料免费下载
    发表于 03-12 15:10 0次下载

    7种MOSFET栅极电路的常见作用,不看不知道

    7种MOSFET栅极电路的常见作用,不看不知道
    的头像 发表于 12-15 09:46 1837次阅读
    7种MOSFET栅极电路的常见作用,不看<b class='flag-5'>不知道</b>!

    揭秘pcb是什么物质:你不知道的“化学战士”

    揭秘pcb是什么物质:你不知道的“化学战士”
    的头像 发表于 12-14 10:27 971次阅读

    Verilog代码:if-else和case的电路结构和区别

    每个if-else就是一个2选1mux器。当信号有明显优先级时,首先要考虑if-else,但是if嵌套过多也会导致速度变慢;if语句结构较慢,但占用面积小。 嵌套的if语句如果使
    的头像 发表于 11-29 15:10 2849次阅读