过长的函数
- 分解条件表达式 范例: 假设要计算购买某样商品的总价(总价=数量*单价),而这个商品在夏季和冬季有不同的价格:
if(!aDAte.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd)) {
charge = quantity * plan.summerRate;
} else {
charge = qiantity * plan.regularRate + plan.regularServiceCharge;
}
把条件判断提炼到一个独立的函数中:
if(summer()) {
charge = quantity * plan.summerRate;
} else {
charge = qiantity * plan.regularRate + plan.regularServiceCharge;
}
function summer() {
return !aDAte.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd);
}
然后提炼条件判断为真、假的分支:
if(summer()) {
charge = summerCharge();
} else {
charge = regularCharge();
}
function summer() {
return !aDAte.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd);
}
function summerCharge() {
return qiantity * plan.regularRate + plan.regularServiceCharge;
}
function regularCharge() {
return qiantity * plan.regularRate + plan.regularServiceCharge;
}
你以为就结束了吗?最后用三元运算符重新安排条件语句:
charge = summer() ? summerCharge() : regularCharge();
function summer() {
return !aDAte.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd);
}
function summerCharge() {
return qiantity * plan.regularRate + plan.regularServiceCharge;
}
function regularCharge() {
return qiantity * plan.regularRate + plan.regularServiceCharge;
}