Timkor

redundantFunc

Nov 22nd, 2020
472
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×