Let's remember one of the previous lessons:
let dollarsCount = 50 * 1.25; // 62.5
let rublesCount = dollarsCount * 60; // 3750
console.log(rublesCount);
From the developer's point of view, such code "smells". It means that the code is hard to comprehend. Even now, when you look at the numbers 60
and 1.25
now, you might find yourself asking, "What are those numbers?" Imagine reading it in a month from now! How could a new programmer who hasn't seen the code before understand it? In our example, you can reconstruct the context through proper naming, but in real life, the code is much more complicated, and it is often impossible to guess the meaning of numbers.
This "smell" is known as Magic Numbers. The numbers with an inexplicable origin, which you can only understand by digging deeper into the code.
The solution is simple: create variables with the right names, and everything will fall into place.
let dollarsPerEuro = 1.25;
let rublesPerDollar = 60;
let dollarsCount = 50 * dollarsPerEuro; // 62.5
let rublesCount = dollarsCount * rublesPerDollar; // 3750
console.log(rublesCount);
Note the following details:
You've come across some code printing the total number of rooms owned by the present king:
let king = 'King Balon the 6th';
console.log(king + ' has ' + (6 * 17) + ' rooms.');
As you can see, these numbers are magical: it is not clear what 6 and 17 are. If you know the history of the royal family, you can guess: each new king inherits all his ancestors' castles and builds a new one, an exact copy of his parents'.
This strange dynasty simply breeds identical castles...
Get rid of the magic numbers by creating new variables and print them.
You'll get this:
King Balon the 6th has 102 rooms.
The variable names should give the meaning of the numbers, but should also be short and succinct enough to be readable.
Note: The code will work with any name, and we only check the printed result, so the task is up to you.
If you've reached a deadlock it's time to ask your question in the «Discussions». How ask a question correctly:
Tests are designed so that they test the solution in different ways and against different data. Often the solution works with one kind of input data but doesn't work with others. Check the «Tests» tab to figure this out, you can find hints at the error output.
It's fine. 🙆 One task in programming can be solved in many different ways. If your code passed all tests, it complies with the task conditions.
In some rare cases, the solution may be adjusted to the tests, but this can be seen immediately.
It's hard to make educational materials that will suit everyone. We do our best but there is always something to improve. If you see a material that is not clear to you, describe the problem in “Discussions”. It will be great if you'll write unclear points in the question form. Usually, we need a few days for corrections.
By the way, you can participate in courses improvement. There is a link below to the lessons course code which you can edit right in your browser.
Your exercise will be checked with these tests:
1import { expectOutput } from 'hexlet-basics/tests';
2
3const expected = 'King Balon the 6th has 102 rooms.';
4expectOutput(expected);
5
Teacher's solution will be available in: