首页 > 其他分享 >js分支优化

js分支优化

时间:2023-05-18 11:33:28浏览次数:26  
标签:判断 代码 js 数组 describeForNameMap 优化 分支

分支优化思想,看下面这段代码

咋一看没感觉有什么异常,但如果有1000个判断条件,按照这种写法难不成要写1000个 if 分支?

如果写了大量的 if 分支,并且可能还具有分支套分支,可以想象到整个代码的可读性和可维护都会大大降低,这在实际开发中,确实是一个比较头疼的问题,那有没有什么办法能够即实现需求又能避免这些问题呢?

简单分支优化

这就涉及到分支优化,让我们转换思维,去优化一下上面的代码结构:

 

问题代码中的判断都是简单的相等判断,那么我们就可以将这些判断条件作为一个属性写到对象describeForNameMap 中去,这些属性对应的值就是条件成立后的处理函数。

之后我们就只需通过getUserDescribe函数接收到的参数去获取describeForNameMap对象中对应的值,如果该值存在就运行该值(因为值是一个函数)。

这样一来原本的 if 分支判断就转换成了简单的key value对应值,条件与处理函数一一对应,一目了然。

 

复杂分支优化

那如果我们的 if 分支中的判断条件不只是简单的相等判断,还具有一些需要计算的表达式时,我们该怎么办呢?(如下所示)

 对于这种结构的代码就不能引入对象来进行分支优化了,我们可以引入二维数组来进行分支优化:

 上面我们定义了一个describeForNameMap数组,数组内的每一个元素代表一个判断条件与其执行函数的集合(也是一个数组),之后我们通过数组的find方法查找describeForNameMap数组中符合判断条件的子数组即可。

结语

分支优化在各种语言中都有不同的实现方式和应用场景,本篇通过JavaScript介绍了两种代码分支优化的思想,代码的实现非常简单,重点在于这种思想的应用。

其实关于分支优化这个问题一直存在争议,目前存在两种观点:

观点1:压根不需要多此一举去优化它,并且优化后的代码因为多创建了一个对象/数组,对对象/数组进行检索反而比单纯的if else还是废性能。
观点2:分支优化后的代码可读性/可维护性更好,并且引入对象/数组所带来的性能问题在当今时代根本不值一提。

 

标签:判断,代码,js,数组,describeForNameMap,优化,分支
From: https://www.cnblogs.com/lijun12138/p/17411417.html

相关文章

  • asp.net web应用程序,如果配置数据设置在 Web. config,每次修改配置项的值,都需要重启应
    问题:asp.netweb应用程序,如果配置数据设置在Web.config,每次修改配置项的值,都需要重启应用才能生效,怎么优化? 对于ASP.netweb应用程序,如果配置数据设置在Web.config,每次修改配置项的值,都需要重启应用才能生效。有没有更好的方法来配置应用程序所需的数据?解决每次修改配置......
  • JSP_5.16_课堂笔记
    完整的可以与数据库连接的登录界面的代码login.jsp<%@pagelanguage="java"contentType="text/html;UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8&......
  • umijs或者webpack配置pwa
    UMI.js实现PWAUMI.js是一个可扩展的企业级前端应用框架,它包含了许多优秀的插件,可以快速搭建起一个高质量的前端应用。UMI.js提供了umi-plugin-pwa插件,可以很方便地实现PWA。安装umi-plugin-pwa插件在UMI.js项目中执行以下命令安装umi-plugin-pwa插件: npmins......
  • 基于爬山优化算法的三维曲面极值搜索matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       爬山法是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)。假定所求问题有多个参数,我们在通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者......
  • 基于爬山优化算法的三维曲面极值搜索matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要爬山法是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)。假定所求问题有多个参数,我们在通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者减少一个单位。爬山法是......
  • 对于相机调用和相册调用的优化以及定位地址进行识别优化
    第一阶段已经实现了,但是由于过于匆忙,导致实现bug过多,如识别优化利用外部类进行实现,内部也进行实现,相机功能与手机不匹配,每一次运行需打开储存权限,今天进行了优化,将代码简化,同时套用《第一行代码》的相机调用与相册调用的,进行修改。实验阶段:将代码在新一个activity内进行书写,最后......
  • 30、Nginx优化
    nginx如何优化更改nginx配置文件:1、工作进程的数量,设为和CPU核数相同2、结亲缘,cpu核与工作进程进行绑定,防止工作进程在cpu上来回跳转3、设置工作进程优先级orker_priority-204、nginx能打开的文件数量上限worker_rlimit_nofile100000;和ulimit-n数量一致,ulimit-n100000......
  • 《Typora+PicGo +Github + jsDelivr + TinyPNG打造稳定快速、高效免费图床》的体验
    《Typora+PicGo+Github+jsDelivr+TinyPNG打造稳定快速、高效免费图床》前言我目前已完成Typora+PicGo图床配置以及PicGo上传失败的解决办法。不过看了EvanXu的这个图床后,发现还可以改进。原先我用的typora+PicGo+Gitter打造图床,而EvanXu的方法是用GItHub做仓库,用jsDelivr做C......
  • JSON第二
    HTMLDOM节点在HTMLDOM中,所有事物都是节点。DOM是被视为节点树的HTML。TML文档中的所有内容都是节点:整个文档是一个文档节点每个HTML元素是元素节点HTML元素内的文本是文本节点每个HTML属性是属性节点注释是注释节点 我们常用父(parent)、子(child)和同胞(sibling)等术......
  • FullCalendar 三:FullCalendar应用——读取JSON数据
    开发者可以使用FullCalendar创建强大的日历日程应用,FullCalendar提供了丰富的选项设置和方法调用,使得开发者可以轻松的创建各种功能的日历程序。本文将结合实例使用PHP读取MySQl数据,显示在FullCalendar日历中。 根据FullCalendar日历插件说明文档中的介绍,日历主体事件数据的......