📅  最后修改于: 2023-12-03 15:38:59.770000             🧑  作者: Mango
在编写程序时,条件语句是非常常见的语句。如果条件语句分支太多或者太复杂,就容易使程序难以维护和阅读。因此,正确拆分条件语句是非常重要的。
拆分条件语句的原则通常有以下几个:
以下提供一些拆分条件语句的方法:
对于一些固定的取值,我们可以使用switch-case语句来处理。
switch(dayOfWeek) {
case 0:
console.log("Sunday");
break;
case 1:
console.log("Monday");
break;
case 2:
console.log("Tuesday");
break;
case 3:
console.log("Wednesday");
break;
case 4:
console.log("Thursday");
break;
case 5:
console.log("Friday");
break;
case 6:
console.log("Saturday");
break;
default:
console.log("Invalid day");
}
如果条件语句的分支比较多,我们可以考虑使用函数来处理分支,使得代码结构更清晰。
function getPrice(type, size) {
if (type === "A") {
if (size === "S") {
return 10;
} else if (size === "M") {
return 20;
} else if (size === "L") {
return 30;
}
} else if (type === "B") {
if (size === "S") {
return 5;
} else if (size === "M") {
return 10;
} else if (size === "L") {
return 15;
}
}
}
可以拆分成以下两个函数:
function getPriceTypeA(size) {
if (size === "S") {
return 10;
} else if (size === "M") {
return 20;
} else if (size === "L") {
return 30;
}
}
function getPriceTypeB(size) {
if (size === "S") {
return 5;
} else if (size === "M") {
return 10;
} else if (size === "L") {
return 15;
}
}
function getPrice(type, size) {
if (type === "A") {
return getPriceTypeA(size);
} else if (type === "B") {
return getPriceTypeB(size);
}
}
另一种方法是使用策略模式(Strategy Pattern),该模式可以将条件语句的分支封装成单独的策略类,从而使得程序更好维护和拓展。
class SmallSizePriceStrategy {
getPrice() {
return 10;
}
}
class MediumSizePriceStrategy {
getPrice() {
return 20;
}
}
class LargeSizePriceStrategy {
getPrice() {
return 30;
}
}
class TypeAPriceStrategy {
getPrice(size) {
if (size === "S") {
return new SmallSizePriceStrategy().getPrice();
} else if (size === "M") {
return new MediumSizePriceStrategy().getPrice();
} else if (size === "L") {
return new LargeSizePriceStrategy().getPrice();
}
}
}
class TypeBPriceStrategy {
getPrice(size) {
if (size === "S") {
return 5;
} else if (size === "M") {
return 10;
} else if (size === "L") {
return 15;
}
}
}
class PriceCalculator {
constructor(strategy) {
this.strategy = strategy;
}
calculatePrice(type, size) {
if (type === "A") {
return this.strategy.getPrice(size);
} else if (type === "B") {
return new TypeBPriceStrategy().getPrice(size);
}
}
}
这样,我们可以通过改变策略来改变程序的行为。
在编写程序时,我们应该尝试按照上述原则来拆分条件语句,从而使得程序更加吸引人和可读性。