/*分解条件表达式*/
/**********************合并条件表达式*********************************/
/***************************合并重复的片段********************************/
if (date.before (SUMMER_START) || date.after(SUMMER_END))
charge = quantity * _winterRate + _winterServiceCharge;
else charge = quantity * _summerRate;
整理后if (notSummer(date))
charge = winterCharge(quantity);
else charge = summerCharge (quantity);
private boolean notSummer(Date date) {
return date.before (SUMMER_START) || date.after(SUMMER_END);
}
private double summerCharge(int quantity) {
return quantity * _summerRate;
}
private double winterCharge(int quantity) {
return quantity * _winterRate + _winterServiceCharge;
}
/**********************合并条件表达式*********************************/
double disabilityAmount() {
if (_seniority < 2) return 0;
if (_monthsDisabled > 12) return 0;
if (_isPartTime) return 0;
// compute the disability amount
整理后
double disabilityAmount() {
if ((_seniority < 2) || (_monthsDisabled > 12) || (_isPartTime))
return 0;
// compute the disability amount
...
整理后
double disabilityAmount() {
if (isNotEligibleForDisability()) return 0;
// compute the disability amount
...
}
boolean isNotEligibleForDisability() {
return ((_seniority < 2) || (_monthsDisabled > 12) ||
(_isPartTime));
}
/***************************合并重复的片段********************************/
if (isSpecialDeal()) {
total = price * 0.95;
send();
}
else {
total = price * 0.98;
send();
}
整理后
<pre name="code" class="java">if (isSpecialDeal())
total = price * 0.95;
else
total = price * 0.98;
send();