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

    文章

    376

    浏览量

    42019

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    断电时,你的后备电源真能启动吗?多数人不知道的UPS保养真相

    断电那一刻,你的后备电源真的能顶上吗?深夜,机房警报突然响起,屏幕瞬间熄灭——不是演习,市电真的断了。所有人的心都提到了嗓子眼,三秒后,服务器指示灯重新亮起,UPS电源的显示屏稳定地闪烁着运行
    的头像 发表于 12-05 13:37 110次阅读
    断电时,你的后备电源真能启动吗?多数<b class='flag-5'>人不知道</b>的UPS保养真相

    现在流行来中国看赛博朋克

    中国以外的人不知道中国有多强
    的头像 发表于 10-10 22:43 4250次阅读
    现在流行来中国看赛博朋克

    工业数据连接器的稳定重要性你不会不知道

    我曾参与一家汽车零部件工厂的智能化改造项目,本以为升级设备就能大幅提升生产效率,却因一时疏忽选用了稳定性欠佳的工业数据连接器。试运行期间,生产线频繁出现数据传输中断,导致机械臂动作错乱,生产出大量残次品,直接经济损失高达数十万元。这次教训让我深刻明白,在工业领域,数据连接器的稳定容不得半点马虎。 工业数据连接器,作为工业设备间数据交互的核心枢纽,其稳定性决定着整个工业生产系统能否正常运转。不同于普通消
    的头像 发表于 07-03 16:32 383次阅读

    编译错误: error: unrecognizable insn,不知道原因,请教!

    用start_gui.exe生成的代码,再用SEGGER Embedded打开,编译有错,不知道是什么原因,请教各位大佬?
    发表于 06-23 14:45

    如果主节点使用AD2433,从节点使用AD2428,会不会有什么风险点?

    如果主节点使用AD2433,从节点使用AD2428,会不会有什么风险点?晚上找不到AD2433的数据手册,感谢各位把遇到的问题提前预警一下。 万分感谢!
    发表于 04-15 07:09

    家用路由器 vs 工业路由器:90%的人不知道的5大区别!工业级设备为何贵10倍?

    一、你的路由器“娇气”吗? “家里的Wi-Fi又断了!”——这是许多家庭的日常抱怨。但你知道吗?在工厂、电力、交通等关键领域,路由器哪怕宕机1分钟都可能造成百万损失! 工业路由器 和家用路由器的差距
    的头像 发表于 04-08 11:39 2178次阅读
    家用路由器 vs 工业路由器:90%的<b class='flag-5'>人不知道</b>的5大区别!工业级设备为何贵10倍?

    原来真有人不知道超声波物位计的优点!

    流量计
    华泰天科
    发布于 :2025年02月27日 19:55:08

    使用DLPC4422+DLP650NE+三色LED,原理设计DLPC4422的LMPSTAT这个管脚悬空未接,会不会有什么影响?

    设计投影仪,使用DLPC4422+DLP650NE+三色LED,原理设计DLPC4422的LMPSTAT这个管脚悬空未接,会不会有什么影响
    发表于 02-26 06:57

    DLP3010EVM-LC使用HDMI在电脑分屏全屏显示图片的情况下,和直接从烧录的图片投影会不会有什么不同?

    我想知道使用HDMI在电脑分屏全屏显示图片的情况下,和直接从烧录的图片投影会不会有什么不同。 因为我在用普通的家用的投影时发现从HDMI分屏显示的图片比从U盘显示的图片效果要差。 图片在分屏上全屏显示,1280x720分辨率。
    发表于 02-21 06:22

    做了一块ADS1298R的PCB板子,忘记把PWDN这根管脚引出了(悬空了,没有连接出来),请问这会不会有问题?

    请教TI专家。我自己做了一块ADS1298R的PCB板子,但是忘记把PWDN这根管脚引出了(悬空了,没有连接出来),请问这会不会有问题。ADS1298R的缺省状态是不是POWER DOWN的状态。如果是,那就杯具了。或者只有当该管脚外接低电平时才会POWER DOWN
    发表于 02-10 07:50

    ADS805E测量跳跃幅度很大,不知道是为什么?

    我按照手册上直流耦合连接电路,输入是1.5V~3.5V范围,SEL与VREF相连,用430定时器输出转换时钟,结果测量直流时,AD测量结果在几个值之间跳跃,跳跃幅度很大,不知道是为什么,引脚电压控制用3.3V。
    发表于 01-21 07:46

    测的值不定然后开始减小直到为0,不知道怎么回事?

    ADS1247对寄存器可读可写 可是配置完02这个地址的时(写0x30)在vrefout测不到2.048v,测的值不定然后开始减小直到为0,不知道怎么回事?
    发表于 01-21 06:27

    LSF010X是否带有自动方向感测?能否转换5MHz到200MHz的信号?

    小幅失真。不知道当低至5MHz时,1.8 to 3.3v转换效果会不会有大的失真? 如果 LSF010X不能满足,有没有推荐的转换频率在5MHz~200MHz,1.8 to 3.3v的双向转换的芯片?谢谢!
    发表于 01-02 08:32

    LM98640的差分信号如果和Virtex-4直接连接的话,只能连接2.5V的bank,请问会不会有隐患?

    根据LM98640的手册,SCLK、SEN、SDI、CLPIN是不是需要由3.3V的bank提供,SDO由1.8V的bank提供? 另外98640的差分信号如果和Virtex-4直接连接的话,只能连接2.5V的bank,请问会不会有隐患?
    发表于 12-23 08:26

    有人不知道射频导纳物位开关的作用有哪些

    物位计
    jzyb
    发布于 :2024年12月20日 09:47:27