Timkor

maxWord

Mar 22nd, 2021 (edited)
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. zero.p2p.shpp.me/tasks/45_1_slova2.html
  2.  
  3.     /*===========================*/
  4.  
  5. let inputString = prompt("Insert some string :"); // бажано створювати змінні якнайближче до місця використання
  6. /* а коли розробляєте, та налагоджуєте прогу, то можна задати рядок літерально, щоб не вводити кожного разу.*/
  7. let tempWord = ""; // currentWord ?
  8. let biggerWord = ""; // max VS bigger - і кожного разу виграєте три літери !) Ну і більш звично.
  9.  
  10. //Обьявление функции сортировки букв
  11. /* хм, сортування.. не впевнений, що потрібне сортування, та його і не бачу в коді функції, є порівняння аскі коду
  12. * з певними діапазонами, та відповідь булева - чи належить до діапазонів, чи ні. Зараз гляну до аскі таблиці, що за
  13. * диапазони такі. От би в каментах були ці коди, або ще краще у змінних (чи константах). Ось так, наприклад:
  14. * let ALetterAsciiCode = 65; (const ALetterAsciiCode = 65; // так константа створюється в js, що не змінеться)
  15. * let ZLetterAsciiCode = 90;
  16. * let aLetterAsciiCode = 97;
  17. * let zLetterAsciiCode = 122;
  18. * тоді б у того, хто читає код не було б потреби навіть у аскі заглядати, бо замість магічних чисел у функції
  19. * були б змінні, що своїми іменами все говорять про себе.) Магічні числа -  це ті, до яких постають питання:
  20. * а що то за числа такі? а чого саме таки? А чи буде з іншими працювати? - іменування змінних (констатнт) на ці
  21. * питання відповідають краще за все! Не магічні числа це  нуль та одиниця, у деяких обставинах деякі інші, але якщо
  22. * змінна (константа)  може бути створена із зрозумілим іменуванням - то число краще саме таким чином зберігати в коді.
  23. *
  24. * Що до іменування, то зазвтичай потрібне дієслово для функції, типу робитьЩось, але для таких, що перевіряють та повертають
  25. * тру або фолс є інша гарна ідея: has, is, was, have на початку іменування функції кажуть нам, що цей метод повертає
  26. * булеве значення. Я б іменував isLetter виходячи з діапазонів */
  27. function sortSymbols(currentSymbol) {
  28.     if ((currentSymbol >= String.fromCharCode(65) && currentSymbol <= String.fromCharCode(90)) ||
  29.         (currentSymbol >= String.fromCharCode(97) && currentSymbol <= String.fromCharCode(122))) {
  30.         return true; // якщо умова правдива, то повертаємо правду.
  31.     } else {
  32.         return false; // якщо умова хибна, то повертаємо false - відчуваєте , що є умова, те і повертаємо? Спростіть вираз,
  33.         // варіант нижче, для порівняння.
  34.     }
  35. }
  36.  
  37.  
  38. // ось тут би я прийняв дані , або викликав функцію (на java мові метод) , що приймає та веріфікує їх.
  39. // let inputString = prompt("Insert some string :"); // бажано створювати змінні якнайближче до місця використання
  40. //Условие ввода пустой строки или отмены
  41. if (inputString == undefined || inputString == false) {
  42.     alert("You didn't insert any string!")
  43. } else {
  44.     //Цикл прохода по всем елементам строки
  45.     for (let i = 0; i < inputString.length; i++) {
  46.         let tempValue = sortSymbols(inputString[i]); // currentLetter ?
  47.         //если символ буква = склеиваем в переменную
  48.         if (tempValue === true) { // порівняння з булевими значеннями можна записувати так: if (tempValue). А if (!tempValue) те саме if (tempValue === false)
  49.             tempWord += inputString[i];
  50.         }
  51.         //если текущее слово больше предидущего, присваиваем новое
  52.         if (tempWord.length > biggerWord.length) { /* з точки зору оптимізації, будемо на кожну літеру порівнювати слова,є
  53.              щось присвоювати до найбільшого слова, можна це робити коли слово зчитане (або кінець рядку), тоді на кожне слово буде перевірка.
  54.              але з точки зору коду - ваш варіант простіший. Якщо буде бажання оптимізувати можете подивиться посилання  codeshare.io/2KKPqP */
  55.             biggerWord = tempWord;
  56.         }
  57.         //обнуляем временную переменную по окончанию слова
  58.         if (tempValue === false) {
  59.             tempWord = "";
  60.         }
  61.     }
  62.  
  63.     alert("The greatest word of your string is : " + biggerWord);
  64. }
  65. /* потім, коли будете все спрощувати, стане в пригоді спочатку привести всю строку до нижнього регістру (є така функція),
  66.  а потім обробляти */
  67. /* Гарного коду */
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100. /* а ще, коли згадаємо, що умова саме і повертає булеве значення, то нашметод взагалі стане виглядати як дорослий*/
  101.  
  102. function isLetter(currentSymbol) {
  103.     currentSymbol = currentSymbol.toLowerCase();
  104.     return ((currentSymbol >= String.fromCharCode(aLetterAsciiCode) &&
  105.  currentSymbol <= String.fromCharCode(zLetterAsciiCode)));
  106. }
Add Comment
Please, Sign In to add comment