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

Отбрось всё лишнее

Количество бонусных миль в Кексофлоте зависит и от класса, и от расстояния. Чтобы завершить программу, можно в каждую ветку проверки на класс перелёта добавить проверки на расстояние. Но такой вариант выглядит громоздко.

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

Посмотрим на код calculateMiles. Мы дважды использовали оператор return, который останавливает выполнение функции:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass) {
    return …;
  } else {
    return …;
  }
};

Если выбран бизнес-класс, программа выполнит код из ветки if и выйдет из функции. В этом случае неважно, какой код идёт в calculateMiles дальше. И наоборот, если выбран эконом, программа в любом случае не зайдёт внутрь первой ветки условия и просто выполнит код, который идёт после неё. Поэтому ветка else здесь необязательна, её можно опустить.

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass) {
    return …;
  }
  return …;
};

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

При этом рефакторингом занимаются все, даже самые крутые рок-звёзды из мира разработки.

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

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

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

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

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

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