Timkor

elevator

Dec 13th, 2020 (edited)
729
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // не вистачало стилю - додав індентацію.
  2. // * - зірочка значить факультативні теми, можна пропустити. Чим більше зірок тим "факультативніше")
  3.  
  4. let floor = prompt('Введіть номер поверху')
  5. if (floor >= 1 && floor <= 9) { //*  якщо інвертувати умову, чи можна буде оптимізувати код? поміркуйте та див. нижче /*1*/
  6.     if (floor > 3 && floor < 7) {
  7.         let password = prompt('Введіть пароль (4 цифри)')
  8.         if (password == 1337) {
  9.             alert('OK')
  10.         } else {
  11.             alert('Пароль невірний')
  12.         }
  13.     } else {
  14.         alert('OK')
  15.     }
  16. }
  17. if (floor < 1 || floor > 9) { // ця сама умова але інвертована вже розглядалась у коді першою, тут її можна замінити на елсе
  18.     // хоча елсе і так забагато, а вони не допомагають читати код.
  19.     alert('Невірний поверх')
  20. }
  21.  
  22. // нормальне рішення, важливо дотримуватися код-стайлу!
  23. // Гарного коду!
  24.  
  25. // * є факультативні питання:
  26. // * якщо написати так if (password === 1337) { що ще треба буде змінити щоб код запрацював? Є два варіанта.
  27. // * що краще використати alert чи console.log , та чому
  28. // ** Чи краще написати if (floor >= 4 && floor <= 6)  ніж if (floor > 3 && floor < 7)?  ЧОму так краще?
  29.  
  30.  
  31.  
  32. /*1*/
  33.  
  34. // *інвертували умову, дещо оптимізували, ось що маємо
  35. let floor = prompt('Введіть номер поверху')
  36. if (floor < 1 || floor > 9) { // інвертована умова тут дозволяє написати дію одразу ж біля неї, а не тягнути через весь код.
  37.     alert('Невірний поверх') // ось цю дію, тоді код читати легше, бо коли в кінці був елсе і його дія, то умова забувалася)
  38. } else {  
  39.     if (floor > 3 && floor < 7) {
  40.         let password = prompt('Введіть пароль (4 цифри)')
  41.         if (password == 1337) {
  42.             alert('OK')
  43.         } else {
  44.             alert('Пароль невірний')
  45.         }
  46.     } else {
  47.         alert('OK')
  48.     }
  49. }
  50. // ***як на мене забагато елсе і повтор виводу "ОК" дублюється.
  51. // ***а чи могла б нам допомогти оптимізувати код змінна у яку ми будемо присвоювати відповідь, а виводити її можна один
  52. // ***раз, в кінці програми? Мій варіант нижче, але якщо вирішите оптимізувати свій код - то не дивиться мій варіант доти.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. let floor = prompt('Введіть номер поверху')
  74. let result = 'OK' // одразу за замовченням присвоїм значення, що дублювалося у двох умовах
  75. if (floor < 1 || floor > 9) {
  76.     result = 'Невірний поверх';
  77. } else {
  78.     if (floor > 3 && floor < 7) {
  79.         let password = prompt('Введіть пароль (4 цифри)')
  80.         if (password != 1337) {
  81.             result = 'Пароль невірний'
  82.         }
  83.     }
  84. }
  85. console.log(result); // у буль якому випадку маємо щось відповісти.
  86.  
  87. // завдяки змінній та її значенню за замовчуванням ми позбавилися від двох елсе та трох алертів, але код став менш гнучкий,
  88. // тобто якщо задача зміниться, і треба буде ще дещо робити при якихось умовах  - то мусимо переписувати повертаючись до
  89. // варіанта вище. Тому саме його (варіант вище) вважаю більш корректним рішенням задачи, а ця оптимізація зі змінною - лише
  90. // експеримент для набуття досвіду та практики.
  91. //* ..а ще тут в коді залишилось дещо зайве, знов той самий елсе, поміркуйте, чи можна від нього позбавитися? Як?)
Advertisement
Add Comment
Please, Sign In to add comment