Индикатор очень плохого кода на JavaScript. Просто найди slice

  Рет қаралды 3,682

WebDev с нуля. Канал Алекса Лущенко

WebDev с нуля. Канал Алекса Лущенко

Күн бұрын

Пікірлер: 78
@mukostenko
@mukostenko Ай бұрын
Нет ничего хуже при обучении чем догматизация каких либо конкретных методов или подходов. человек потом ляпнет где-то, что slice это зло и на этом собес закончится
@itgid
@itgid Ай бұрын
Т.е. разбираться не будете? Например в видео вы не разобрались и сделали вывод на непонятной основе - сделали догматизацию своих домыслов. Ведь в видео приводится и адекватный способ применения и идет разбор почему применяется и даже делается ударение на том, что нужно уметь документацию и делать адекватный выбор. Или вы только по заголовку судите?
@KadochnikovK
@KadochnikovK Ай бұрын
В первом задании есть условие "функция выводит значения массива arr_14 в .out_14 с помощью цикла". Не оправдываю применение slice в данной ситуации, но решение с помощью join не соответствует условию.
@12345_qwerty
@12345_qwerty Ай бұрын
Join сам по себе проходит циклом
@KadochnikovK
@KadochnikovK Ай бұрын
@@12345_qwerty если в задаче есть подобное уточнение, то составитель явно дает понять, что решение должно быть с использованием циклов, а не с любым методом, который внутри себя использует циклы.
@12345_qwerty
@12345_qwerty Ай бұрын
@ согласен
@oleksandrkotovskyi4203
@oleksandrkotovskyi4203 Ай бұрын
ООООЧЕНЬ нравится подача информации!!!! не просто нажмите сюда и сюда, а обучение механикам и основам !! это шикарно!! надеюсь VUE.JS когда-то появится на канале?!
@Tar2ga
@Tar2ga Ай бұрын
кроме аргумента, что спред визуально больше нравится чем слайс, я не услышал, В чём проблема слайса то?
@areyousleeping7054
@areyousleeping7054 Ай бұрын
проблема в том, что контринтуитивно, и метод используется не по назначению
@glebr7557
@glebr7557 Ай бұрын
Дак так многое можно не по назначению пользовать, а досталось слайсу )
@markusnotfound3007
@markusnotfound3007 Ай бұрын
@@areyousleeping7054 еще аргумент будет?
@pickun1524
@pickun1524 Ай бұрын
@@areyousleeping7054 бред
@chorny33
@chorny33 Ай бұрын
Какая-то вкусовщина, сильно ты на практике сидишь разделяешь где не надо слайс применять, главное что бы работало и можно было просто поджерживать
@itgid
@itgid Ай бұрын
Любое видео отражает мнение сугубо часное. Плюс разработчики не самые адекватные люди, причем ЧСВ зашкаливает. Теперь по "работало". На первых этапах становления программиста да. Главное чтобы работало. Следующий этап - уметь оценить адекватность кода и применяемых решений. Вот тут и проблема перехода. Ну и сюда вопрос поддержки - хороший код поддерживать проще чем тот, который написан "просто работает".
@chorny33
@chorny33 Ай бұрын
@@itgid архитектура самого приложения и какими путями ты решаешь задачи имеет намного больше значения, чем то используешь ты slice или нет. Если тебе надо один раз вычислить переменную/значение и потом использовать её дальше по коду, то почему нельзя использовать slice для избежания размножения сущностей? Потому что так какой-то дед пердед в 80 году придумал? При обработке урлов часто такое может встречаться, да и не только
@chorny33
@chorny33 Ай бұрын
@@itgid а вкусовщина это потому, что даже деда можно переучить на другой синтаксис и способы написания и вуаля, он будет через время говорить, что те кто не использует slice те не правильные. Я сам просто за практику и языки менял и стили написания, потом привыкаешь к другому и все, тебе кажется как же ты без этого жил
@NovikovEugene13
@NovikovEugene13 18 күн бұрын
9:00 меня больше вымораживает объявление переменной через let, в случаях когда не предполагается её изменение.
@dimageorgiev5798
@dimageorgiev5798 Ай бұрын
с возвращением )
@AleksTrifonov.s21
@AleksTrifonov.s21 Ай бұрын
Объясни, почему такая нелюбовь к slice?
@itgid
@itgid Ай бұрын
Я люблю данные методы. Но я топлю за то, чтобы разработчик имел в голове несколько возможностей для решения задачи и мог выбрать лучший. Т.е. понимал границы и возможности методов решения задач, мог сравнить и выбрать оптимальный путь для решения. Только за это. Поэтому приходится "прогревать" чуточку внимание.
@bjiastx
@bjiastx Ай бұрын
Чисто об'єктивно - відео про упереджене ставлення автора і все) Відкриваємо MDN і бачимо що метод slice є у строки і виконує роботу із строкой. Метод slice у масива - повертає новий масив. Тобто по факту це абсолютно два різних метода різних класів
@windcrack8404
@windcrack8404 Ай бұрын
Благодарю за видео, как всегда чему-то да научился. Хотелось бы услышать Ваше мнение о методе reduce. Когда его лучше использовать и в каких моментах он не нужен. Жму подобайку !
@itgid
@itgid Ай бұрын
Может пародоксально но я люблю и reduce и slice. Просто заметил - что slice становится панацеей по все проблемы. Я за то, чтобы тот, кто пишет код прочитал документацию и имел в голове несколько методов - чтобы выбирать наиболее удобный метод в конкретной ситуации. Только за это. Но для такого нужно привлечь внимание - что и делает данное видео.
@BorisSavenco
@BorisSavenco Ай бұрын
А, и правда забавно, никогда не задумьівался, что slice практически никогда не использую
@markusnotfound3007
@markusnotfound3007 Ай бұрын
что за число 135449653384411000 внутри функции t19Opt внутри console.log ? Откуда это число взять? Я ведь не могу сам придумать любое число и туда вписать, это ведь не будет работать?
@zaffe
@zaffe Ай бұрын
Timestamp в миллисекундах (Unix-time)
@markusnotfound3007
@markusnotfound3007 Ай бұрын
@@zaffe и что его самому надо придумать или где то взять?
@jinke5935
@jinke5935 Ай бұрын
@@markusnotfound3007 , можете взять сегодняшней датой и перевести её в миллисекунды.
@itgid
@itgid Ай бұрын
у нас есть функция performance.now() которая получает текущее время в миллисекундах от 1 января 1970 года. Второй запуск дает тоже текущее время после отработки циклов. Если отнять одно от другого то получаем время выполнения нашего кода.
@pavel7930
@pavel7930 Ай бұрын
Кому не нравиться спред оператор, можно использовать concat с пустым массивом
@itgid
@itgid Ай бұрын
Можно. Но тут вопрос стиля. Чесно говоря в практике очень мало встречал в реальных кодах такое применение. Наверное огибало меня.
@alexbro9091
@alexbro9091 Ай бұрын
берем поп-корну и смотрим в комментах тру кодеров 😂
@AlexStr-h9t
@AlexStr-h9t Ай бұрын
toReversed()
@SerzhNesteruk
@SerzhNesteruk Ай бұрын
Да! Вместо slice (или spread) с reverse.
@nowar6874
@nowar6874 Ай бұрын
Он вышел в es2022 стандарте, а значит в пролёте
@gomuncool1004
@gomuncool1004 Ай бұрын
Удачи с поддержкой браузеров
@AlexStr-h9t
@AlexStr-h9t Ай бұрын
@@gomuncool1004 babel?
@AlexStr-h9t
@AlexStr-h9t Ай бұрын
@@gomuncool1004 Babel?
@B_G_V
@B_G_V Ай бұрын
Зачем во втором примере копировать элемент массива, перед тем как вызвать reverse??? Насколько я знаю метод map не изменяет оригинальный массив, зачем в колбеке использовать spread, или slice?
@SerzhNesteruk
@SerzhNesteruk Ай бұрын
Хоть map и не изменяет, но сам reverse мутирует массивы оригинала, посему лучше юзать toReversed.
@B_G_V
@B_G_V Ай бұрын
@SerzhNesteruk понял, спасибо
@AlexStr-h9t
@AlexStr-h9t Ай бұрын
В массиве содержатся другие массивы (ссылочные типы)
@itgid
@itgid Ай бұрын
если чесно не уловил где и что. Напишите код который вызвал вопрос.
@B_G_V
@B_G_V Ай бұрын
​@@itgidarr_18.map(element => [...element].reverse()) - в этом коде я думал, что можно обойтись без slice, или spread. Думал что копия создается автоматически самим методом map :)
@areyousleeping7054
@areyousleeping7054 Ай бұрын
даже в голову не приходило, что можно таким образом slice() применять. обычно для копий использую spread (реже concat) или для глубокого копирования рекурсивную функцию пилю.
@МаксимМороз-о2ч
@МаксимМороз-о2ч Ай бұрын
Для глубокого копирования у js есть функция structuredClone
@BorisSavenco
@BorisSavenco Ай бұрын
(() => { const maxLen = 6; let i = 0; const elem = document.querySelector('.yt-simple-endpoint.style-scope.yt-formatted-string'); setInterval(() => { elem.innerText = (1
@Dark_GameR095
@Dark_GameR095 Ай бұрын
люди ви тоже каждое утро обмазиваетесь .slice?😂
@12345_qwerty
@12345_qwerty Ай бұрын
Так тут проблема не в slice а не в знании метода join.
@itgid
@itgid Ай бұрын
знают метод уже к этому моменту.
@NelTheWinner
@NelTheWinner Ай бұрын
Эти слайсеры из питона пришли что ли?
@itgid
@itgid Ай бұрын
увы немогу ответить.
@sanchezz1135
@sanchezz1135 Ай бұрын
Если бы у меня собесе кто-то сделал spread вместо slice у массива, собес бы на этом закончился. Я бы даже не стал спрашивать как работает spread и что там под капотом. Если уж так хочется сделать reverse, то всегда есть toReversed.
@ОлександрПархоменко-г4й
@ОлександрПархоменко-г4й Ай бұрын
судя по вашему ответу вы скорей-всего в этом году начали учить свой первый язык программирования.
@vladimirfrolov740
@vladimirfrolov740 Ай бұрын
Вы может прекрасный разработчик, но лучше вам не проводить собесы.
@pickun1524
@pickun1524 Ай бұрын
🤡
@sanchezz1135
@sanchezz1135 Ай бұрын
@@ОлександрПархоменко-г4й Я бы с удовольствием послушал профессионалов своего дела.
@sanchezz1135
@sanchezz1135 Ай бұрын
@@vladimirfrolov740 обожаю такие комменты. Я правда хороший разработчик и, по-моему, намного лучше Вас. Очень надеюсь, что вы прочтете стандарт и посмотрите как что работает.
@SerzhNesteruk
@SerzhNesteruk Ай бұрын
Каюсь...🙏 Для задачи 7:08 мне тоже хочется slice прикрутить. 🩼🚲 Примерно как-то так: const t19 = (time) => { const date = new Date(time); const offset = date.getTimezoneOffset(); date.setMinutes(date.getMinutes() - offset); return date.toISOString().slice(0, 16).replace('T', '_'); };
@Запискисамоучки
@Запискисамоучки Ай бұрын
поменять slice() на substring() =) ps: вообще бесит как лепят даты, возможностей Date и Intl.DateTimeFormat хватает за глаза.
@SerzhNesteruk
@SerzhNesteruk Ай бұрын
​@@Запискисамоучки Возможностей Date, кстати, не хватает. Скоро в стандарт ECMAScript ещё и Temporal завезут. 🙂
@ihor_zybin_life1825
@ihor_zybin_life1825 Ай бұрын
Спасибо за качественный контент!
@mcoxotnik
@mcoxotnik Ай бұрын
Ахринеть, я вообще не знал о существовании "String.prototype.padStart"... Ну как я понял, я альтернативно-одарённый, я вообще не использовал slice, да же в строках, преобразовывал их в массив делал манипуляции и возвращал через join. Насчёт твоего поиска "как создать копию массива в js", мне выдавало спред и джон парс(стрингифай), вообще не знал, что slice может делать копию массива, потому что думал, что он изменяет исходный массив. UPD Ошибся, я использовал slice для массива, но в своё оправдание скажу, я его использовал для логирования и определял как (0, 10), чтобы не выводить векторный столбец (простой одномерный массив) длинной 240к элементов.
@windcrack8404
@windcrack8404 Ай бұрын
Я тоже не знал. Как всегда у Александра снова чему-то научился. Я в своем опыте может раза 2 или 3 использовал slice для массива, чтобы сократить массив который поступил мне с бэка :).
Собеседование JavaScript: реализуйте стек за 5 минут
19:20
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 3,3 М.
Сравниваем скорости создания копий массивов в JavaScript разными способами
20:13
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 2,9 М.
요즘유행 찍는법
0:34
오마이비키 OMV
Рет қаралды 12 МЛН
Counter-Strike 2 - Новый кс. Cтарый я
13:10
Marmok
Рет қаралды 2,8 МЛН
Wednesday VS Enid: Who is The Best Mommy? #shorts
0:14
Troom Oki Toki
Рет қаралды 50 МЛН
Reduce это просто. JavaScript
17:11
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 62 М.
Пишем корзину магазина на JavaScript
29:06
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 649
ВСЯ БАЗА НАЧИНАЮЩЕГО ПРОГРАММИСТА ЗА 40 МИНУТ
41:34
Бинарный происк
Рет қаралды 43 М.
JavaScript событийный цикл Event Loop, асинхронный код, промисы (Promise), async / await
24:03
React 19: Новые хуки, которые вы ждали
21:13
Владилен Минин
Рет қаралды 17 М.
요즘유행 찍는법
0:34
오마이비키 OMV
Рет қаралды 12 МЛН