首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

其实我们可以少写点 if else 和 switch

不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起看看if还能怎么写。...最基本 if-else 假设有这么个场景,不同情况下打印不同值。 因为涉及到的条件太多,就不提三目运算之类优化了。...if (a == 1) { console.log('a1') } else if (a == 2) { console.log('b2') } else if (a == 3) {...数组映射 当然在某些状态下可以使用数组,来做这个配置对象。 // 这里就涉及其他优化了,例如将执行函数抽离出来,大家不要关注func的内容就好。...此外现有成熟的库里loadsh也是可以到达目的,不过自己思考过之后再去看大神的作品理解会更深入一点。

46620

其实我们可以少写点if else和switch

不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。...所以我们一起看看if还能怎么写 最基本if-else 假设有这么个场景,不同情况下打印不同值。 因为涉及到的条件太多,就不提三目运算之类优化了。...if (a == 1) { console.log('a1') } else if (a == 2) { console.log('b2') } else if (a == 3) {...数组映射 当然在某些状态下可以使用数组,来做这个配置对象。 // 这里就涉及其他优化了,例如将执行函数抽离出来,大家不要关注func的内容就好。...也就是说我们的键值不是字符串而是个数组,object显然只支持字符串,那么可以将这么多key合并成一个:'1,2,3,4,..,9'。 但是查找的时候有点问题了,我们的参数肯定不能完全匹配。

44410

其实我们可以少写点if else和switch

不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。...所以我们一起看看if还能怎么写 最基本if-else 假设有这么个场景,不同情况下打印不同值。 因为涉及到的条件太多,就不提三目运算之类优化了。...if (a == 1) { console.log('a1') } else if (a == 2) { console.log('b2') } else if (a == 3) { console.log...数组映射 当然在某些状态下可以使用数组,来做这个配置对象。 // 这里就涉及其他优化了,例如将执行函数抽离出来,大家不要关注func的内容就好。...这里一直没有达到我最初的目的,即键里面重复的数组,可以不通过多余操作匹配到,上面不管怎么样都进行了处理,这不是懒人的想要的。

42530

使用策略模式消除if else

策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。...大家都写过这样的代码 if (conditionA) { 逻辑1 } else if (conditionB) { 逻辑2 } else if (conditionC) { 逻辑...if-else 不超过 2 层,块中代码 1~5 行,直接写到块中,否则封装为方法 if-else 超过 2 层,且块中代码超过 3 行,尽量使用策略模式 下面是PHP策略模式的demo,需求是当需要发送各种通知的时候..., 比如发送短信 ,发送邮件 , 发送微信通知 等等 ,可以拆分成一个个策略 factory->register($t); } } public function doAction(){ //根据传递的type参数 , 选择使用哪一个策略

81630

使用策略模式替代if-else

,当if-else过多的时候,这对于维护会造成很大阻碍,所以我想有没有一种利于后期维护的方案呢?...百度得到答案大多都是使用策略模式,把业务逻辑都控制在每种情况的实体类中,这里我也参考下网上的方式使用策略模式来完成这次逻辑变动(说来惭愧,前面自己还写过策略模式的文章,但是仍然不会实际运用,可见学的东西要真的用起来才能融会贯通...首先枚举类我们保持不变,增加考勤的抽象类,其中general和generalPerformanceScore方法是修改前计算分数方法,对于没有改动的请假子类我们调用这个方法就可以了。...if-else语句,优点很明显, 每个算法单独封装,减少了算法和算法调用者的耦合 合理使用继承有助于提取出算法中的公共部分。...不过可以使用享元模式来减少对象的数量。 ---- 近期小程序会做一次新的升级改动,希望大家能多多关注

1.6K20

使用策略模式消除if else代码

this.examRuleHandlerContext.getHandlerInstance(reqDTO.getTypeCode()).queryHandler(reqDTO); } } 可以看到上面的方法中注入了...现在可以了解到,我们主要的业务逻辑是在处理器中实现的,因此有多少个代报考类目,就对应有多少个处理器。...以后需求变化,增加了代报考类目,只需要添加相应的处理器就可以,上述ExamServiceImpl完全不需改动。...总结 利用策略模式可以简化繁杂的if else代码,方便维护,而利用自定义注解和自注册的方式,可以方便应对需求的变更。...本文只是提供一个大致的思路,还有很多细节可以灵活变化,例如使用枚举类型、或者静态常量,作为代报考的类型,相信你能想到更多更好的方法。

55350

使用策略模式干掉大片的 if else

传统实现 根据类型写一堆的if else: public String handle(Process process){ if(process.type="1"){//请假} else if(process.type...else{} } 这样就会导致这个class/method很庞大,维护性很差。...使用策略模式实现 策略模式的重心:是如何实现算法,而是如何组织,调用算法,让程序更加灵活,具有更 好的可维护性和扩展性。 策略模式的本质:是算法分离,选择算法。...1.写一个抽象处理器来约束具体的实现 也可以定义成接口,定义成抽象类是因为有一些流程公共的方法可以放在抽象类中、 /** * 抽象类,用来约束具体的处理流程 */ public abstract...type); return res; } 后续补充 讲的不错 https://zhuanlan.zhihu.com/p/91667659 参考 如何干掉 Spring Boot 中大片的 if else

32910

Nest.js 实战系列四:使用管道、DTO 验证入参,摆脱 if-else 的恐惧

你是否曾经为了验证参数,写了一大堆 if - else ?然后还要判断各种参数类型?相似的结构在不同的方法里判断,却又要复制一遍代码?...使用 DTO 可以清晰的了解对象的结构,使用 Pipes(管道)配合 class-validator 还可以对参数类型进行判断,还可以在验证失败的时候抛出错误信息。...当然,Nest 支持使用 Interface(接口) 来定义 DTO,具体语法可以浏览 TypeScript 官方文档,不过 Nest 建议使用 Class 来做 DTO(就踩坑经验而言, Class...至此,入参验证功能已基本完成,有了这些,我们就可以摆脱各种 if - else 来验证入参了(当然,特殊的,逻辑比较复杂的还是需要的)。...实战系列二:数据库连接与使用 Nest.js 实战系列一:项目创建&路由设置&模块 Nest.js 实战系列三:JWT 实现单点登录 Nest.js 实战系列四:使用中间件、拦截器、过滤器打造日志系统

3.4K20
领券