我是靠谱客的博主 满意大侠,最近开发中收集的这篇文章主要介绍如何优化代码中的多层if嵌套前言Map,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

日常开发中经常要针对不同业务场景作出不同行为与判断,在最早接触的时候普遍都是使用如下代码进行业务区分:

if(res.data.code===0){
//do something
}else if(res.data.code===1002){
//do something
}else if(res.data.code===1004){
//do something
}else{
//do something
}

这样的代码既不好维护又十分冗长,既不优雅又不美观,属于典型的低质量代码.

稍微进阶一点的会懂得使用switch函数进行简化和区分,但并不能从根本上解决这类问题.

究其原因,此类低质量代码产生的实质来源于面向过程编程的缺陷.

如何解决?

Map

new Map([array1,array2])语法是ES6中诞生的,主要功能是将多个键值对数组合并成一个新的Map对象,其本质与使用不同于Object,详细区别点击这里查看:What is Map?

Map简单的set/get使用

Map对象的创建会对键值进行顺序插入,对相同的键仅会保留最后顺序的值

const StatusCode = new Map(
[[401,'请求错误'],[402,'未授权'],[403,'拒绝访问']]
);
StatusCode.get(401) //'请求错误'
StatusCode.set(401,'My lord,the time has changed!')
StatusCode.get(401) //'My lord,the time has changed!'
StatusCode.set([404,'first'],[404,'second'])
StatusCode.get(404) //second

复杂业务函数处理

	const _this = this;
    const StatusCode = new Map([
      [
        401,
        async () => {
          console.log(_this.requset(params));
        }
      ],
      [
        402,
        () => {
          console.log("未授权");
        }
      ],
      [
        403,
        () => {
          console.log("拒绝访问");
        }
      ]
    ]);
    const ShowMessage = code => {
      //Map对象转数组
      [...StatusCode].forEach(([key, value]) => {
        key === code ? value.call() : "";
      });
    };
    ShowMessage(402) //'未授权'

最后

以上就是满意大侠为你收集整理的如何优化代码中的多层if嵌套前言Map的全部内容,希望文章能够帮你解决如何优化代码中的多层if嵌套前言Map所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部