Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // не вистачало стилю - додав індентацію.
- // * - зірочка значить факультативні теми, можна пропустити. Чим більше зірок тим "факультативніше")
- let floor = prompt('Введіть номер поверху')
- if (floor >= 1 && floor <= 9) { //* якщо інвертувати умову, чи можна буде оптимізувати код? поміркуйте та див. нижче /*1*/
- if (floor > 3 && floor < 7) {
- let password = prompt('Введіть пароль (4 цифри)')
- if (password == 1337) {
- alert('OK')
- } else {
- alert('Пароль невірний')
- }
- } else {
- alert('OK')
- }
- }
- if (floor < 1 || floor > 9) { // ця сама умова але інвертована вже розглядалась у коді першою, тут її можна замінити на елсе
- // хоча елсе і так забагато, а вони не допомагають читати код.
- alert('Невірний поверх')
- }
- // нормальне рішення, важливо дотримуватися код-стайлу!
- // Гарного коду!
- // * є факультативні питання:
- // * якщо написати так if (password === 1337) { що ще треба буде змінити щоб код запрацював? Є два варіанта.
- // * що краще використати alert чи console.log , та чому
- // ** Чи краще написати if (floor >= 4 && floor <= 6) ніж if (floor > 3 && floor < 7)? ЧОму так краще?
- /*1*/
- // *інвертували умову, дещо оптимізували, ось що маємо
- let floor = prompt('Введіть номер поверху')
- if (floor < 1 || floor > 9) { // інвертована умова тут дозволяє написати дію одразу ж біля неї, а не тягнути через весь код.
- alert('Невірний поверх') // ось цю дію, тоді код читати легше, бо коли в кінці був елсе і його дія, то умова забувалася)
- } else {
- if (floor > 3 && floor < 7) {
- let password = prompt('Введіть пароль (4 цифри)')
- if (password == 1337) {
- alert('OK')
- } else {
- alert('Пароль невірний')
- }
- } else {
- alert('OK')
- }
- }
- // ***як на мене забагато елсе і повтор виводу "ОК" дублюється.
- // ***а чи могла б нам допомогти оптимізувати код змінна у яку ми будемо присвоювати відповідь, а виводити її можна один
- // ***раз, в кінці програми? Мій варіант нижче, але якщо вирішите оптимізувати свій код - то не дивиться мій варіант доти.
- let floor = prompt('Введіть номер поверху')
- let result = 'OK' // одразу за замовченням присвоїм значення, що дублювалося у двох умовах
- if (floor < 1 || floor > 9) {
- result = 'Невірний поверх';
- } else {
- if (floor > 3 && floor < 7) {
- let password = prompt('Введіть пароль (4 цифри)')
- if (password != 1337) {
- result = 'Пароль невірний'
- }
- }
- }
- console.log(result); // у буль якому випадку маємо щось відповісти.
- // завдяки змінній та її значенню за замовчуванням ми позбавилися від двох елсе та трох алертів, але код став менш гнучкий,
- // тобто якщо задача зміниться, і треба буде ще дещо робити при якихось умовах - то мусимо переписувати повертаючись до
- // варіанта вище. Тому саме його (варіант вище) вважаю більш корректним рішенням задачи, а ця оптимізація зі змінною - лише
- // експеримент для набуття досвіду та практики.
- //* ..а ще тут в коді залишилось дещо зайве, знов той самий елсе, поміркуйте, чи можна від нього позбавитися? Як?)
Advertisement
Add Comment
Please, Sign In to add comment