2.0 KiB
2.0 KiB
#рефакторинг #методы_рефакторинга
Проблема
Код, который имеет дело с двумя разными задачами
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];
}
Причины рефакторинга
- Код, который имеет дело с двумя разными задачами
Достоинства
- Если мне нужно будет вносить изменения в программу, мне придется иметь дело с каждой задачей в отдельности и не потребуется держать их обе в голове
Порядок рефакторинга
- Выделите код второй фазы в собственную функцию
- Введите промежуточную структуру данных как дополнительный аргумент извлекаемой функции
- Изучите каждый параметр извлеченной второй фазы. Если он используется в первой фазе, переместите его в промежуточную структуру данных
