处理乍一看需要许多嵌套 if 语句的复杂业务逻辑的好方法是什么?
例子:
优惠券。可能:
1a) 价值折扣
1b) 百分比折扣
2a) 正常折扣
2b) 累进折扣
3a) 需要访问优惠券
3b) 不需要访问优惠券
4a) 仅适用于之前已购买的客户
4b) 适用于任何客户
5a) 仅适用于来自国家 (X,Y,…) 的客户
这需要比这更复杂的代码:
if (discount.isPercentage) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isValue) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isXXX) {
if (discount.isNormal) {
} else if (discount.isProgressive) {
}
}
即使您将 IF 替换为 switch/case,它仍然太复杂了。有什么方法可以使它可读、可维护、更易测试和易于理解?