Refactoring #1

RMAG news

In this article we are summarizing the most interesting parts of:

Martin Fowler – Refactoring (2018) Chapter 6 “A First Set of Refactorings”

Extract variable

return order.quantity * order.itemPrice Math.max(0, order.quantity 500) * order.itemPrice * 0.05 + Math.min(order.quantity * order.itemPrice * 0.1, 100)

const basePrice = order.quantity * order.itemPrice;
const quantityDiscount = Math.max(0, order.quantity 500) * order.itemPrice * 0.05;
const shipping = Math.min(basePrice * 0.1, 100);
return basePrice quantityDiscount + shipping;

Changing a parameter

function inNewEngland(aCustomer) {
return [MA, CT, ME, VT, NH, RI].includes(aCustomer.address.state);
}

const newEnglanders = someCustomers.filter(c => inNewEngland(c));

function inNewEngland(stateCode) {
return [MA, CT, ME, VT, NH, RI].includes(stateCode);
}

const newEnglanders = someCustomers.filter(c => inNewEngland(c.address.state));

Split Phase

const orderData = 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];
}

Please follow and like us:
Pin Share