• Теория
  • Теория

Сделай мне красиво

Первый шаг рефакторинга сделан. Самое главное, что функция работает так же, как и до рефакторинга. Значит можно двигаться дальше. Смотрите, в функции дублируется код для расчёта миль. Выражения отличаются только значением процентов:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass) {
    return distance * 0.22;
  }
  return distance * 0.18;
};

Давайте взглянем на решение с другой стороны: что если в условиях считать процент, а не дублировать расчёт миль? Мы можем переформулировать задачу так, что базовый процент равен 18, а если класс перелёта бизнес, то процент увеличивается на 4. Затем в конце функции один раз считаем и возвращаем мили.

let calculateMiles = function (distance, isBusinessClass) {
  // Вводим процент
  if (isBusinessClass) {
    // Изменяем процент
  }
  // Рассчитываем и возвращаем мили
};

Второй шаг рефакторинга такой: создаём переменную percent, которая будет меняться в зависимости от условия, а возвращать из функции будем результат выражения distance * percent.

Так код станет понятней, да и точка выхода из функции будет только одна. Функцию станет проще читать, потому что условия для изменения процента теперь можно делать не вложенными, а последовательными.

Точка выхода из функции — место, где функция прекращает свою работу и отдаёт результат наружу.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Функции» тренажёра «Базовые структуры данных» можно после регистрации и оформления подписки.