Timkor

redundantFunc

Nov 22nd, 2020
364
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // не треба ускладнювати завдання, будь ласка. Функції то сила, але тут використовуєте не зовсім вдало, і зовсім не вчасно.
  2. // я не зможу на прикладі цієї задачи пояснити свою думку щодо работи з функціями, лише відмічу, що вони мають робити код
  3. // зрозумілішим завдяки декомпозиції. Також дуже важливо щоб кожна функція виконувала саме те, про що йдеться у її назві, та
  4. // нічого більше, звідки можна зрозуміти, що іменування функцій не саме просте та пов'язане із семантикою коду.
  5.  
  6. let cards = [];
  7.  
  8. for (var i = 0; i < 10; i++) {
  9.     cards.push(0);
  10. }
  11. // Пусті рядки  - то є норм, зазвичай один , щоб щось відокремити.
  12.  
  13.  
  14. ATM();
  15. //Запускаем банкомат
  16. function ATM(){  // невдала назва, краще startAtm
  17.     checkCard();
  18. }
  19.  
  20.  
  21. // Запрашивем номер карты и проверяем на корректность
  22.  
  23. function checkCard(){ //  можливо checkCardNumberValid -  та зазвичай зручно щоб функції перевірки чогось повертали булеве
  24. // значення, тобто пройдено перевірку чи ні, а у таких функці назва має бути на кшталт isCardNumberValid  
  25.     numCard = +prompt('vvedi nomer kartochki:'); // тут ви просите номер картки
  26.  
  27.     if(numCard >= 0 && numCard <= 9){ // яккщо номер валідний тобто від 0 до 9 то
  28.         console.log('vvedi nomer kartochki: ' + numCard); // краще console.log('nomer kartochki is: ' + numCard);
  29.         checkUpCard(numCard); // не можу поняти, що буде робити функція checkUpCard , теж перевірка, але ж..
  30.     }else{
  31.         checkCard(); // виклик функції із самої себе то є рекурсія, тут вона не потрібна.
  32.     }
  33. }
  34. // Запрашиваем сумму для пополнения карты, так же проверяем сумму на корректность // добре, що пишете коменти! тепер можна
  35. // припустити, що більш доречна назва для функції була б requestPaymentSumAndCheckPayventSumValid та ми пам'ятаємо, що
  36. // краще коли функція робить лише одне діло, тобто тут і назва і семантика не дуже.
  37. function checkUpCard(numCard){ // круто, що передаєте параметром номер картки для обробки
  38.     upCard = +prompt('skolko polozhit?');
  39.  
  40.     if(upCard >= -1000 && upCard <= 1000){
  41.         console.log('skolko polozhit? ' + upCard);
  42.         cards[numCard] = upCard;
  43.         console.log(cards.join(' '));
  44.         balanseCard(); // послідовний виклик наступної функції то є норм, але у вас знов таки вони закільцуються у
  45. // рекурсію, треба не зовсім так хробити, треба щоб десь був процес* (можливо теж функція) який здійснює виклик послідовних
  46. // потрібних функцій ТА ЩОБ керування поверталося саме йому на первних етапах. Обіцяв зараз про функції не писати - то не
  47. // буду. більше не буду.  
  48.     }else{
  49.         checkUpCard(numCard);
  50.     }
  51. }
  52.  
  53. // подсчитываем баланс на всех картах и предоставляем возможнсть положить еще деньни на карту
  54. function balanseCard(){
  55.     let cardBalance = 0; // назва не асоціюєця із сумою
  56.     for(card of cards){
  57.         cardBalance += +card;
  58.     }
  59.     console.log('v summe na vseh kartah ' + cardBalance);
  60.  
  61.     let repeat = confirm('Hochesh eshe polozhit dengi na kartochku?');
  62.     if(repeat){
  63.         ATM(); // ось тут коло замкнеться і викликана колись у початку ланцюжка функція ATM не буде завершена, і не поверне керування у процес* а замість цього вона ж знову викликається якби всереді самої себе.. і так не буде вічно, бо ж
  64. // коди ви все запускаєте і нічого не завершуєте то пам'яті не вистачить, рекурсія потребує ресурсів.)
  65.     }
  66. }
  67.  
  68. // Hochesh eshe polozhit dengi na kartochku? -
  69. // краще не використовувати транслітерацію і писати на англійській мові латинськими літерами, а якщо немає такої можливості
  70. // то на зручній вам, але тоді, напевно,  кирилецею
  71. // Гарного коду!
RAW Paste Data