Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: error handling, single responsibility, DRY, helper function, JavaScript

Почему дублировать обработку ошибки в вызывающей функции и в helper-функции типа checkError — избыточно?

Вопрос проверяет понимание принципа единственной ответственности и избегания дублирования логики обработки ошибок в JavaScript.

Короткий ответ

Дублирование обработки ошибок нарушает принцип DRY и усложняет поддержку кода. Если ошибка обрабатывается в helper-функции, то вызывающая функция не должна повторять ту же логику. Это приводит к тому, что при изменении логики обработки ошибок придется править код в нескольких местах, что увеличивает риск ошибок.

Длинный ответ

Проблема дублирования обработки ошибок

Когда разработчик создает helper-функцию для обработки ошибок (например, checkError), предполагается, что эта функция берет на себя ответственность за корректную реакцию на ошибочные ситуации. Если вызывающая функция также содержит свою собственную обработку тех же ошибок, возникает дублирование логики.

Пример избыточного дублирования

function checkError(err) {
  if (err.code === 'NETWORK_ERROR') {
    console.error('Network issue');
    return { status: 'error', message: 'Network failed' };
  }
  return { status: 'ok' };
}

function fetchData() {
  try {
    const result = apiCall();
    return checkError(result);
  } catch (err) {
    // Дублирование: та же логика, что и в checkError
    if (err.code === 'NETWORK_ERROR') {
      console.error('Network issue');
      return { status: 'error', message: 'Network failed' };
    }
    throw err;
  }
}

В этом примере fetchData сначала вызывает checkError, но затем в блоке catch повторяет ту же самую логику. Это избыточно, так как helper-функция уже обрабатывает ошибку.

Правильный подход

Лучше доверить обработку ошибок helper-функции полностью, а вызывающая функция должна только вызывать её и, возможно, добавлять специфичную для своего контекста логику (например, логирование или повторную попытку).

function fetchData() {
  try {
    const result = apiCall();
    return checkError(result);
  } catch (err) {
    // Только специфичная логика, не дублирующая checkError
    logError(err);
    throw err;
  }
}

Вывод

Дублирование обработки ошибок нарушает принцип единственной ответственности и усложняет поддержку кода. Следует делегировать обработку ошибок специализированным функциям, а вызывающие функции должны добавлять только контекстно-зависимую логику.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#error handling

#single responsibility

#DRY

#helper function

#JavaScript

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.