• 关于消除if-else的简单总结


             if-else是计算机语言中基本的分支语句,虽然很简单,但可能会出现滥用的情况,如图:

             这种标记判断,嵌套成这样(其实没有必要嵌套),会让别人觉得作者水平很低。

             可以看出,这些if仅仅是在判断一个变量,根据这个变量的值,返回不同的文字信息。

             用switch也不是很好,那样虽然理解起来容易一些,但仍然需要编写很长很长的代码。

             接下来小菜就总结几点消除if-else的小技巧。

    1.将对应关系保存在数据库中,作为字典。

            

             截图中的例子,无非就是一个对应关系,把指定的数字翻译成文字信息。

             这很像我们常用的字典,我们只需要把数字和文字信息存入数据库,然后通过数字查询文字信息即可。

             这样一来,翻译工作仅需一条简单的sql语句就能完成,完全不需要这样写这么多冗余代码。

             缺点是这样可能会造成数据库频繁访问。

    2.巧用map

             大家都知道,map是一个键值对结构,拿上边的例子来说,我们可以把数字作为key,文字信息作为value存入map,这样一来,我们无需任何判断,直接map.get(key)就可以拿到文字信息。

             通过map这个数据结构,我们可以轻易的完成对应关系,无需关心底层实现。

             需要注意的是,最好不要把对应关系在程序中写死,可以和数据库配合一下,创建一个专门转换的类,这个类在加载的时候去数据库里查一下对应关系,然后保存到map中,以后再取,直接读map就可以了,这样即保证了效率(只查询一次数据库),又保证了灵活性(修改对应关系无需改动程序,修改数据库即可)。

    3.map延伸。

             其实,map很神奇,再多考虑一步,map的value中保存的不再是基本数据类型,而是对象。

             这样一来,通过不同的key可以拿到不同的对象,如果这些对象的类都实现同一个接口,那么这就是一个加强版的策略模式。

             策略模式就是多态,传统的策略模式传入的是实现类的对象,而通过map加强,只需传入一个数字或字符串即可实现多态。

             当然,小菜只是简单的总结了一下思路,应对普通的if还可以,但是对于复杂的、混有大量业务逻辑的if,还需要自行斟酌。

             希望本文能给读者带来启发。

  • 相关阅读:
    防雪崩利器:熔断器 Hystrix 的原理与使用
    SpringBoot返回结果为null或空值不显示处理方法
    Tomca原理分析之责任链
    TOMCAT原理详解及请求过程
    RocketMQ支持事务消息机制
    ubuntu 安装rocketmq
    Monkey安装与配置教程
    Monkey通过安装包获取包名
    git使用笔记
    Linux解压命令
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/3491211.html
Copyright © 2020-2023  润新知