由于嵌套切换案例的可读性不高,我如何优化嵌套切换案例?
switch (code) {
case 200:
switch (status) {
case 'EXISTS':
$alreadyExistsMessage.show();
break;
case 'UPDATED':
$alreadyExistsMessage.show();
break;
case 'ERROR':
$wrongFormatMessage.show();
break;
}
break;
case 201:
redirectOnSuccess(data);
break;
default:
$wrongFormatMessage.show();
break;
}
答案 0 :(得分:2)
我唯一要做的就是将案例APP_REMOVED_FROM_RECENTS.
和'UPDATED'
合并为同一块:
'EXISTS'
答案 1 :(得分:0)
另一种方法是创建代码和状态的“地图”。
在此示例中,您有一个callbacks
变量,其作用类似于地图。然后,您可以code
访问这些属性。如果该属性是函数,则运行它,否则使用status
检索包含该函数的属性。
/* mocks */
var code = 200;
var status = 'UPDATED';
var $alreadyExistsMessage =
$wrongFormatMessage = {
show: () => {
console.log(code, status, callback[code][status]);
}
};
/* code */
var callback = {
'200': {
'EXISTS': $alreadyExistsMessage.show,
'UPDATED': $alreadyExistsMessage.show,
'ERROR': $wrongFormatMessage.show
},
'default': $wrongFormatMessage.show
};
var fn = callback[`${code}`];
if (typeof fn === 'function') {
fn();
}
else if (!fn) {
fn = callbacks['default'];
fn();
}
else {
fn = fn[status];
fn();
}