范例(Examples)
我們從一個(gè)簡單計(jì)算開始:
double price() {
//price is base price - quantity discount + shipping
return _quantity * _itemPrice -
Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
Math.min(_quantity * _itemPrice * 0.1, 100.0);
}
這段代碼還算簡單,不過我可以讓它變得更容易理解.首先我發(fā)現(xiàn),底價(jià)(base price)等于數(shù)量(quantity)乘以單價(jià)(item price).于是我把這一部分計(jì)算的結(jié)果放進(jìn)一個(gè)臨時(shí)變量中:
double price() {
//price is base price - quantity discount + shipping
final double basePrice = _quantity * _itemPrice;
return basePrice -
Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
Math.min(_quantity * _itemPrice * 0.1, 100.0);
}
稍后也用上了[數(shù)量乘以單價(jià)]運(yùn)算結(jié)果,所以我同樣將它替換為basePrice臨時(shí)變量:
double price() {
//price is base price - quantity discount + shipping
final double basePrice = _quantity * _itemPrice;
return basePrice -
Math.max(0, _quantity - 500) * _itemPrice * 0.05 +
Math.min(basePrice * 0.1, 100.0);
}
然后,我將批發(fā)折扣(quantity discount)的計(jì)算提煉出來,將結(jié)果賦予臨時(shí)變量quantityDiscount:
double price() {
//price is base price - quantity discount + shipping
final double basePrice = _quantity * _itemPrice;
final double quantityDiscount = Math.max(0, _quantity - 500) *
_itemPrice * 0.05;
return basePrice - quantityDiscount +
Math.min(basePrice * 0.1, 100.0);
}
最后,我再把運(yùn)費(fèi)(shipping)計(jì)算提煉出來,將運(yùn)算結(jié)果賦予臨時(shí)變量shipping.同時(shí)我還可以刪掉代碼中的注釋,因?yàn)楝F(xiàn)在代碼已經(jīng)可以完美表達(dá)自己的意義了:
double price() {
//price is base price - quantity discount + shipping
final double basePrice = _quantity * _itemPrice;
final double quantityDiscount = Math.max(0, _quantity - 500) *
_itemPrice * 0.05;
final double shipping = Math.min(basePrice * 0.1, 100.0);
return basePrice - quantityDiscount + shipping;
}