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

Просто добавь процент

Второй шаг рефакторинга позади. В консоли всё те же результаты: 660 миль и 540 миль. Значит, логику мы не испортили, и рефакторинг прошёл успешно.

Благодаря тому, что мы отрефакторили наш код, вписать в функцию ещё один if совсем несложно:

let calculateMiles = function (distance, isBusinessClass) {
  let percent = 0.18;
  if (isBusinessClass) {
    percent += 0.04;
  }
  if (distance > 3500) {
    // Ещё раз изменяем процент
  }
  return distance * percent;
};

А что будет, если мы не введём переменную процента и не сократим количество выходов из функции?

Код calculateMiles будет выглядеть очень страшно. Как-то так:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass && distance > 3500) {
    return distance * 0.37;
  }
  if (isBusinessClass && distance <= 3500) {
    return distance * 0.22;
  }
  if (!isBusinessClass && distance > 3500) {
    return distance * 0.33;
  }
  return distance * 0.18;
};

Или не менее страшно. Вот так:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass) {
    if (distance > 3500) {
      return distance * 0.37;
    } else {
      return distance * 0.22;
    }
  } else {
    if (distance > 3500) {
      return distance * 0.33;
    } else {
      return distance * 0.18;
    }
  }
};

И это только для двух условий, влияющих на расчёт миль. Представьте, каким громоздким станет код, если появится ещё одно или два новых условия расчёта миль (что в реальной практике встречается часто).

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

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

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

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

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

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