Магические числа

Вспомним один из прошлых уроков:

let euros = 1000;
let dollars = euros * 1.25; // => 1250
let rubles = dollars * 60; // => 75000

console.log(rubles);

С точки зрения профессиональной разработки, такой код «пахнет». Так описывают код, который не соответствует Best Practices (лучшим практикам). И причина здесь вот в чем: уже сейчас, глядя на числа 60 и 1.25, вы скорее всего задаетесь вопросом: «что это за числа?». А представьте, что будет через месяц! А как его поймет новый программист, не видевший код ранее? В нашем примере контекст восстанавливается благодаря грамотному именованию, но в реальной жизни код значительно сложнее, и догадаться до смысла чисел зачастую невозможно.

Этот «запах» называют Magic Numbers (магические числа). Числа, происхождение которых невозможно понять без глубокого знания происходящего внутри данного участка кода.

Выход из ситуации прост: достаточно создать переменные с правильными именами, как все встанет на свои места.

let dollarsInEuro = 1.25;
let roublesInDollar = 60;

let euros = 1000;
let dollars = euros * dollarsInEuro; // => 1250
let rubles = dollars * roublesInDollar; // => 75000

console.log(rubles);

Обратите внимание на следующие детали:

  • Именование lowerCamelCase
  • Две новые переменные отделены от последующих вычислений пустой строчкой. Эти переменные имеют смысл и без вычислений, поэтому такое отделение уместно, оно повышает читаемость.
  • Получился хорошо именованный и структурированный код, но он длиннее прошлой версии. Так часто бывает, и это нормально. Код должен быть читабельным.

Задание

Вы столкнулись с таким кодом, который выводит на экран общее количество комнат во владении нынешнего короля:

let king = 'King Balon the 6th';
console.log(king + ' has ' + (6 * 17) + ' rooms.');

Как видите, это магические числа: непонятно, что такое 6 и что такое 17. Можно догадаться, если знать историю королевской семьи: каждый новый король получает в наследство все замки от предков и строит новый замок — точную копию родительского.

Эта странная династия просто плодит одинаковые замки…

Избавьтесь от магических чисел, создав новые переменные, и выведите текст на экран.

Получится так:

King Balon the 6th has 102 rooms.

Названия переменных должны передавать смысл чисел, но должны при этом оставаться достаточно короткими и ёмкими для комфортного чтения.

Помните: код будет работать с любыми названиями, а наша система всегда проверяет только результат на экране, поэтому выполнение этого задания — под вашу ответственность.

Упражнение доступно только авторизованным пользователям.

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