zoukankan      html  css  js  c++  java
  • 关于消除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,还需要自行斟酌。

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

  • 相关阅读:
    Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
    Python全栈开发记录_第六篇(生成器和迭代器)
    Python全栈开发记录_第五篇(装饰器)
    Python全栈开发记录_第四篇(集合、函数等知识点)
    Python全栈开发记录_第三篇(linux(ubuntu)的操作)
    Python全栈开发记录_第二篇(文件操作及三级菜单栏增删改查)
    Python全栈开发记录_第一篇(循环练习及杂碎的知识点)
    NET控件Designer架构设计
    如何把Excel中的单元格等对象保存成图片
    “某某云词典” – 纠结的初体验
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/3491211.html
Copyright © 2011-2022 走看看