在实际的业务开发当中,经常会遇佳期如梦电视剧结局到复杂的业务逻辑,可能部分同学实现出来的代码并没有什么问题,但是代码的可读性很差。本篇文章主要总结一下自己在实际开发中如何避免大面积的 if-el 代码块的问题。补充说明一点,不是说 if-el 不好,而是多层嵌套的 if-el 导致代码可读性差、维护成本高等问题。
现有如住房营业税下一段示例代码,部分优化技巧是根据这段代码进行的
比如上面这段代码中
这里可以拆分成两段逻辑,核心思想就是逻辑单元最小化,然后合并逻辑单元。
比如 技巧一 中的 getcitynull 方法,我们可以这样写
经过 技巧一 和 技巧二 的优化,文章开头的这段代码被优化成如下所示:
现在利用 枚举 来优化 getcitynull 方法中的 for 循环部分代码,我们可以看resulted到这段代码中有4段逻辑,总体形式如下:
按照这个思路利用枚举进行二次优化,将其中的逻辑封装到枚举类中:
然后 getcitynull 方法中 for 循环部分逻辑如下:
其实在这个业务场景中使用枚举并不是特别合适,如果在遍历对象时,我们就知道要执行哪个枚举类型,此时最合适,伪代码如下:
业务场景描述:比如让你做一个简单的营销拉新活动,这个活动投放到不同的渠道,不同渠道过来的用户奖励不一样。现假设在 头条、微信 等渠道都投放了该活动。此时你的代码可能会写出描写春季的诗句如下形式:
看完这段代码,逻辑上是没有什么问题的。但它有一个隐藏的缺陷,如果后期又增加很多渠道的时候,你该怎么办?继续 el if 吗?其实我们可以利用函数式接口优化,当然设计模式也可以优化。这里我只是举例使用一下函数式接口的使用方式。
针对一些复杂的业务场四个意识是指什么景,业务参数很多时,可以利用 @functionalinterface
自定义函数式接口来满足你的业务需求,使用原理和本例并无差别。
设计模式对于if-el的优化,我个人觉得有些重,但是也是一种优化方式。设计模式适合使用在大的业务流程和场景中使用,针对代码块中的if-el逻辑优化不推荐使用。
常用的设计模式有:
策略模式模板方法工厂模式单例模式还是以上面的营销拉新活动为例来说明如何使用。
还是以营销拉新为业务场景来说明,这个业务流程再增加一些复杂度,比如发放奖励之前要进行 身份验证、风控验证 等一些列的校验,此时你的业务流程该如何实现更清晰简洁呢!
定义业务策略接口定义奖励发放模板流程实现不同渠道的奖励业务定义工厂方法,对外统一暴露业务调用入口业务入口方法假如发起请求: post http://localhost:8080/activity/reward3?urid=fei&source=wx
不论使用那种技巧,首先是我们在业务代码开发过程中一定要多思考,将复杂的业务逻辑能通过简洁的代码表现出来,这才是你的核心能力之一,而不是一个 curd boy。与君共勉,共同进步!
gitee 获取源码
到此这篇关于java实战技巧之if-el代码优化技巧的文章就介绍到这了,更多相关javaif-el代码优化技巧内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 02:27:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3c06f149444d3ded3dc28f4d934396fc.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:java实战技巧之if.doc
本文 PDF 下载地址:java实战技巧之if.pdf
留言与评论(共有 0 条评论) |