范例(Examples)
我們從一個簡單計算開始:
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),底價(base price)等于數(shù)量(quantity)乘以單價(item price).于是我把這一部分計算的結(jié)果放進一個臨時變量中:
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é)果,所以我同樣將它替換為basePrice臨時變量:
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)的計算提煉出來,將結(jié)果賦予臨時變量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);
}
最后,我再把運費(shipping)計算提煉出來,將運算結(jié)果賦予臨時變量shipping.同時我還可以刪掉代碼中的注釋,因為現(xiàn)在代碼已經(jīng)可以完美表達自己的意義了:
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;
}