gpt4 book ai didi

Javascript/NodeJs 优化重复的 if-else

转载 作者:行者123 更新时间:2023-11-28 12:35:26 25 4
gpt4 key购买 nike

我如何重构/重写下面的代码以提高可读性和可维护性?我有两个主分支,每个分支都有相同的 if-else 链,其中包含 3 个选项和 3 个子选项。我总共有 9 个叶子节点,有 9 个不同的函数要执行。

function selectFunctionToRun(){
if (isFirstOption()) {
if(isAlpha()){
if(isXRay()){
do1();
}else if (isYankee()){
do2();
}else if (isZebra()){
do3();
}
}else if (isBeta()){
if(isXRay()){
do4();
}else if (isYankee()){
do5();
}else if (isZebra()){
do6();
}
}else if (isCharlie()){
if(isXRay()){
do7();
}else if (isYankee()){
do8();
}else if (isZebra()){
do9();
}
}
}
else if(isSecondOption(){
if(isAlpha()){
if(isXRay()){
do11();
}else if (isYankee()){
do12();
}else if (isZebra()){
do13();
}
}else if (isBeta()){
if(isXRay()){
do14();
}else if (isYankee()){
do15();
}else if (isZebra()){
do16();
}
}else if (isCharlie()){
if(isXRay()){
do17();
}else if (isYankee()){
do18();
}else if (isZebra()){
do19();
}
}
}
}

提前非常感谢。

最佳答案

嗯,这更简洁,但我不确定这是否值得您付出努力。我在每种情况下都添加了一些额外的复杂性,以防所有选项都不正确。如果其中之一得到保证,您就可以避免整个“中止”逻辑。

var functionMap = {
firstOption: {
alpha: { xRay: do1, yankee: do2, zebra: do3 },
beta: { xRay: do4, yankee: do5, zebra: do6 },
charlie: { xRay: do7, yankee: do8, zebra: do9 }
},
secondOption: {
alpha: { xRay: do11, yankee: do12, zebra: do13 },
beta: { xRay: do14, yankee: do15, zebra: do16 },
charlie: { xRay: do17, yankee: do18, zebra: do19 }
}

};

function selectFunctionToRun() {
var option = (isFirstOption()) ? "firstOption" : (isSecondOption()) ? "secondOption" : "abort";
var abc = (isAlpha()) ? "alpha" : (isBeta()) ? "beta" : (isCharlie()) ? "charlie" : "abort";
var xyz = (isXRay()) ? "xRay" : (isYankee()) ? "yankee" : (isZebra()) ? "zebra" : "abort";
if (option != "abort" && abc != "abort" && xyz != "abort") {
functionMap[option][abc][xyz].call();
}
}

关于Javascript/NodeJs 优化重复的 if-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com