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 ответов

18 просмотров

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта