前言
日常开发中经常要针对不同业务场景作出不同行为与判断,在最早接触的时候普遍都是使用如下代码进行业务区分:
复制代码
1
2
3
4
5
6
7
8
9
10if(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对象的创建会对键值进行顺序插入,对相同的键仅会保留最后顺序的值
复制代码
1
2
3
4
5
6
7
8
9const 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
复杂业务函数处理
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29const _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的全部内容,更多相关如何优化代码中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复