Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Задача про міста
- // https://zero.p2p.shpp.me/tasks/4_0_goroda.html
- function arrayIncludes(array, arrayLength, motherCity) { // створила функцію для знаходження збігів
- for (let i = 0; i < arrayLength; i++) {
- if (motherCity == array[i]) {
- return true;
- }
- }
- return false;
- }
- /* о, прикольно, функції то рівень! Ну в цієї задачі можна було б обійтися.. але круто, що застовували! Що до іменувань.. ви ж знаєте , що в програмуванні всього дві проблеми? Це вдалі іменуванні, валідація кешу, та помилка на одиничку.)
- Так ось, функції, які щось перевіряють та дають булєву відвовідь (тру чи фолс) прийнятно іменувати так, щоб їх відповідь (ну що вони повертають) семантично випливало з назви, тобто якщо функція перевіряє чиВходитьЧислоДоМасиву (чиМассивМіститьЧисло) то звчично так
- isArrayIncludeNumber(array, number) , блін рагульне іменування вийшло, можна спростити до isNumberIncludes(number, array). Теж рагульнувато, але см принцип можна вивести: is, has, для булевих функції саме те, що допомагаэ читати код. Доречі в яп часто вже є подібний функціонал, наприклад в js є includes , і не питайте чого в них така назва... )) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
- Ще про функції, чим менше параметрів - тим краще, більше 4 - зашквар повний, три - ну тільки якщо реально потрібно, а увас один зайвий, можна скоротити до стандартних двох.))
- Доречі чим меньше сама функція - і відповідно вона буде виконувати тільки свою маленьку справу - тим також краще. Іменувати легше, і семантика зберідеться й не буде неочікуванних сайд ефектів, коти перевірив чи масив містить елемент викликавши функцію, а вона не тільки перевірила, а й ще відсортувала масив, або навіть додавла цей елем, бо ж його там не було бідненького.. не треба так, одна функція - одна відповідальність.) Ну це я не про вашу, ваша молодець.)
- motherCity - краще nativeCity мабуть.. але що ще важливо - така семантично коректна назва буде круто читатися в вашому коді тобто в контексті завдання про міста та рідне місто, а в контексті функції яка має перевірити чи містить якийся масив якийся елемент - це прям зайва назва, в контексті такої функії іменування будуть массви та елемент, все. Бо ж ми можемо її викликати щоб перевірити чи містить масив попуг нашого Кєшу, наприклад. motherCity Кєша..)))
- Про передачу до параметрів функцій за значенням та за посиланням знаєте? Напркилад масив передається за посиланням, тобто якщо ви йог всередені функції змінете (навіть нічого не повертаючи з неї) то змінете ви сам масив який передали до неї. А змінна примітивна передаєтьс яз азначенням, тобто на неї не подіять зміни в функції, хіба що повертати їй нове значення ретурном та присвоювати при виклику функціі : змінна = перемножНаДва(2), перемножНаДва(н) {return н * 2}.
- */
- let array = new Array(5); // заповнила масив значеннями за допомогою циклу, масиви іменуйте в множині того, що вони зберігають - тут міста було б норм.
- for (let i = 0; i < array.length; i++) {
- let city = prompt("Введи назву міста " + (i + 1)); // UI !!! ))
- array[i] = city;
- }
- /* в завданні 10, розумію, що задовбалися вводити, можна для тесту захардкодити масивчит, щоб не вводити кожного разу,
- let array = ['Dnipro', 'Kyiv', 'Donetsk', 'Uzhhorod', 'Zaporizhzhia', 'Ivano-Frankivsk', 'Lviv', 'Odesa', 'Poltava', 'Rivne',]
- До речі, остання кома допускається , навіть назву має - висяча. А що до введення вручну.. то я б на Запоріжжі зламався б))
- */
- let arrayLength = array.length; // оптимізація??
- let motherCity = prompt("Введи назву рідного міста");
- if (arrayIncludes(array, arrayLength, motherCity) == true) { // умова і виведення результатів в одному блоці
- console.log("Я знаю твоє місто");
- } else if (arrayIncludes(array, arrayLength, motherCity) == false) {
- console.log("Я НЕ знаю твоє місто");
- }
- /* можна записати простіше */
- if (arrayIncludes(array, arrayLength, motherCity)) { // == true прибрав, бо іф саме очікує тру чи фолс у собі, а це і повертає ваша функція
- console.log("Я знаю твоє місто");
- } else { // if (arrayIncludes(array, arrayLength, motherCity) == false) навіщо ж знову всі міста перебирати, якщо не тру, то точно фолс..
- console.log("Я НЕ знаю твоє місто");
- }
- /* не впевнений, що це буде для вас корисним, але якщо це не займе багато часу вважаю корисним закодити цю ж задачку без функції, це не забаганка, там є нюанс, що може статися в пригоді у подальшій карїєрі. А взагалі функції - так, завжди добре! І щоб не повторювати свій код, і декомпозувати його, і додати семантики в нього, коли читаєшь наче прозу!)
- Гарного коду.) */
Add Comment
Please, Sign In to add comment