아래 내용은 리팩터링 2판 내용과 한달한권 읽기 강의를 기반하여 정리한 글입니다.
//전
const aReading = acquireReading();
const base = (baseRate(aReading.month, aReading.year) * aReading.quantity);
const taxableCharge = Math.max(0, base=taxThreshold(aReading.year));
const basicChargeAmount = calculateBaseCharge(aReading);
// 함수로 추출되어 있지만 못 보고 지나치기 쉽상이다.
fucntion calculateBaseCharge(aReading) {
return baseRate(aReading.month, aReading.year) * aReading.quantity;
}
// 후
const aReading = acquireReading();
const base = aReading.baseCharge;
const taxableCharge = aReading.taxableCharge
const basicChargeAmount = aReading.baseCharge;
class Reading {
get baseCharge() {
// 생략 내용은 위에 코드랑 동일
}
get taxableCharge() {
// 생략 내용은 위에 코드랑 동일
}
}
//전
const aReading = acquireReading();
const base = (baseRate(aReading.month, aReading.year) * aReading.quantity);
const taxableCharge = Math.max(0, base=taxThreshold(aReading.year));
const basicChargeAmount = calculateBaseCharge(aReading);
// 함수로 추출되어 있지만 못 보고 지나치기 쉽상이다.
fucntion calculateBaseCharge(aReading) {
return baseRate(aReading.month, aReading.year) * aReading.quantity;
}
// 후
const rawReading = acquireReading();
const aReading = enrichReading(rawReading);
const base = aReading.baseCharge;
const taxableCharge = aReading.taxableCharge
const basicChargeAmount = aReading.baseCharge;
function enrichReading(original) {
const result = _.cloneDeep(original);
result.baseCharge = caculateBaseCharge(result);
result.taxableCharge = Math.max(0, base=taxThreshold(aReading.year));
fucntion calculateBaseCharge(aReading) {
return baseRate(aReading.month, aReading.year) * aReading.quantity;
}
}
//전
const orderRecord = orderString.split(/\s+/);
const productPrice = priceList[orderData[0].split("-")[1]];
const orderPrice = parseInt(orderData[1]) * productPrice;
//후
const orderRecord = parseOrder(order);
const orderPrice = price(orderRecord, priceList);
function parseOrder(aString) {
const values = aString.split(/\s+/);
return ({
productID: values[0].split("-")[1],
quantity: parseInt(values[1]),
})
}
function price(order, priceList) {
return order.quantity * priceList[order.productID];
}