Вопрос проверяет понимание принципов рефакторинга и декомпозиции кода для улучшения читаемости и поддерживаемости.
Выделение кода в отдельные методы — это один из ключевых приёмов рефакторинга, который помогает сделать код более читаемым, поддерживаемым и тестируемым. Основная идея заключается в том, чтобы каждый метод отвечал за одну логическую операцию и имел понятное название, отражающее его суть.
Рассмотрим пример на JavaScript, где код обрабатывает заказ и отправляет уведомление:
function processOrder(order) {
// Проверка заказа
if (!order.items || order.items.length === 0) {
throw new Error('Order is empty');
}
// Расчёт стоимости
let total = 0;
for (let item of order.items) {
total += item.price * item.quantity;
}
// Отправка уведомления
console.log(`Order processed: ${total}`);
// Сохранение в базу
saveToDatabase(order);
}После рефакторинга:
function validateOrder(order) {
if (!order.items || order.items.length === 0) {
throw new Error('Order is empty');
}
}
function calculateTotal(order) {
return order.items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}
function sendNotification(total) {
console.log(`Order processed: ${total}`);
}
function processOrder(order) {
validateOrder(order);
const total = calculateTotal(order);
sendNotification(total);
saveToDatabase(order);
}Теперь каждый метод выполняет одну задачу, код стал более читаемым и тестируемым.
Выделение кода в отдельные методы стоит применять всегда, когда это улучшает читаемость, уменьшает дублирование или упрощает тестирование. Это базовая практика, которая делает код профессиональным и лёгким для поддержки.