来自: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.策略模式+工厂+单例模式,锦上添花
接下来使用“工厂类+单例”来给代码加点料:
编辑:jq
-
开发
+关注
关注
0文章
373浏览量
41661
原文标题:三种方式,教你优雅的替换if-else语句!
文章出处:【微信号:harmonyos_developer,微信公众号:harmonyos_developer】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
工业数据连接器的稳定重要性你不会不知道吧?
如果主节点使用AD2433,从节点使用AD2428,会不会有什么风险点?
使用DLPC4422+DLP650NE+三色LED,原理设计DLPC4422的LMPSTAT这个管脚悬空未接,会不会有什么影响?
DLP3010EVM-LC使用HDMI在电脑分屏全屏显示图片的情况下,和直接从烧录的图片投影会不会有什么不同?
ADS1220的AVDD接5V, DVDD接3.3V可不可以?

ADC12D1000Vcmo工作在输出模式,如果接地了会不会有问题?
TPS54329连接手机充电时,audio噪声挺大的怎么解决?
关于陶瓷电路板你不知道的事

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

评论