170 похожих чатов

Привет, у меня есть следующий пример из кода нашего проекта: const

{ userId, picture, email, verificationCode } = data;
delete data.userId;
delete data.picture;
delete data.email;
delete data.verificationCode;
мы часто используем метод delete или добавляем новые поля объекта, иногда модифицируем новые поля, то-есть мы это всё делаем непосредственно уже в самом сервисе, а не когда Объект только вышел из фабрики или конструктора

Дайте совет, с точки зрение мономорфного написания кода, насколько это плохая практика писать код вот так, модифицируя объект на всем его пути пока он не попадёт к базе ?

Кстати ровно тоже самое мы делаем с request, у нас реквест мутируется по пути к контроллеру раза 5 на разных middleware, мы к нему дописываем различные поля, на сколько понимаю request - это такой же самый объект который лучше не модифицировать просто так

Скажите почему такая практика плохая с точки зрения производительности(может не только с точки зрения производительности, но еще есть какие-то причины)
и самое главное скажите как правильно писать код в таких ситуациях когда необходимо мутировать объект, создать просто новый объект и уже работать с ним ? А что если это request, мы же не будем создавать новый реквест

6 ответов

4 просмотра

когда ты мутируешь обьект таким образом через удаление полей и добавлении новых полей происходит деоптимизация и код начинает работать на порядок медленней но возможно все равно не так критично медленней чтобы заметил человеческий глаз но деоптимизация происходит это факт

Ruslan-Postoiuk Автор вопроса
Anton K.
когда ты мутируешь обьект таким образом через удал...

какая альтернатива, как правильно решать такие задачи ?

Ruslan Postoiuk
какая альтернатива, как правильно решать такие зад...

не мутировать / не удалять поля / не создавать поля пользоваться всегда const значения которые на развилках получать через функции и тд

Ruslan-Postoiuk Автор вопроса
Anton K.
не мутировать / не удалять поля / не создавать пол...

к сожалению конст не запретит тебе добавлять, мутировать поля

Если ещё не успели рассказать про hidden classes и деоптимизацию, которая возникает после delete, можешь погуглить про них Старый, но относительно актуальный доклад про hidden classes: https://youtu.be/SNs61SwZbTI Про деоптимизацию вроде был issue, но не помню как его искать, можешь поискать самостоятельно

Похожие вопросы

Обсуждают сегодня

Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Делал задачу вот такую https://stepik.org/lesson/4985/step/9?unit=1083 получилось такое https://play.haskell.org/saved/ipKrepqe оно работает, тестов много не писал, но работае...
Fedor
9
Почему спрашиваю - поймал падение на совершенно уже пустом проекте, хочу до минимального повторяемого свести... Такой вопрос - вот эти юниты, перечисленные в инспекторе объек...
notme
6
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Друзья, за кем?
Magic
12
А шо, ты этой библиотекой пользуешься?
Darkanronpa Dark Hole
10
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет. Кто-то может подсказать, как можно перевести значения Selection поля, если список значений в нем формируется динамически? Я изначально их получаю из selection дру...
Наталья Селезнева
6
Карта сайта