Будни разработчика
14.6K subscribers
1.36K photos
398 videos
8 files
2.28K links
Download Telegram
#фишка дня

Ребятки, тут в Chrome Canary прилетел structuredClone! Кто не знает, это рекурсивное копирование объекта: https://developer.mozilla.org/en-US/docs/Web/API/structuredClone

Вот только structuredClone заодно может не просто скопировать, но и перенести некоторые данные в новый объект. В буквальном смысле.

Больше никаких самодельных рекурсивных обходов. Ну, скоро.

Раньше было только в Firefox, кстати. В Chromium добавил https://twitter.com/AndreuBotella/

#js #object #clone
#фишка дня

Заканчивайте использовать JSON.parse(JSON.stringify(obj)) для дублирования (aka глубокого копирования aka deep copy) объектов в JavaScript.

Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.

Уже достаточно давно имеется structuredClone.

Наличествует во всех современных браузерах, есть полифилл.

P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️

#js #clone
👍23🔥3🥰1
#инструмент дня

Раз уж упомянули пару постов назад Кори Хауса, то давайте ещё чего-нибудь по его рекомендации.

И сегодня это инструмент для поиска дубликатов кода: jscpd.

Сразу ссылка на GitHub: https://github.com/kucherenko/jscpd

Как получаются дубликаты, клоны кода? Да от плохих абстракций. Сами по себе они ничем не плохи, ну есть у вас повторы там-сям, кому от этого плохо?

Ну, пока лежат — никому. Но если в одном таком куске кода баг — это лишь вопрос времени, когда он себя проявит в другим таком же куске. А чинить-то его везде надо.

Ну и на фронтенде банально раздувается размер бандла. Тоже такое себе.

Вообще, клонированный код это показатель того, что где-то у вас плохо с абстракциями, одна и та же логика применяется к, казалось бы, разным сущностям и так далее. Само по себе, это не так плохо, не просто же так в оппозиции к DRY (do not repeat yourself) существует WET (write everything twice).

Но иметь инструмент для поиска совсем уж лишнего — весьма неплохо.

А для тех, кому надо докопаться до сути, имеется целое исследование по поиску клонов кода, на 115 страниц: https://research.cs.queensu.ca/TechReports/Reports/2007-541.pdf

Но все, что я могу сказать — это что jscpd является реализацией детектора копий первого типа 🫠

Пользуется кто-нибудь чем-то подобным в своих проектах? Делитесь.

#js #clone #lint
👍14
#фишка дня

Заканчивайте использовать JSON.parse(JSON.stringify(obj)) для дублирования (aka глубокого копирования aka deep copy) объектов в JavaScript.

Такой метод игнорирует даты, неопределённые значения и не работает с циклическими зависимостями.

Уже достаточно давно имеется structuredClone.

Наличествует во всех современных браузерах, есть полифилл.

P. S. вот тока не надо мне про лодаш тут плиз) все же использовали JSON-решение из-за скорости ⚡️

#js #clone #бородач
👍12