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

88 ответов

48 просмотров

снижается читаемость кода. он становиться менее предасказуемым. куда лучшче четко видеть что и откуда props.item - понятно что взяли данные из пропсов item - что это? надо идти смотреть а откуда этот item на код ревью (где не так все хорошо с просмотром кода и часто мы не видим весь код) item.title = “some” - вроде все ок props.item.title = “some” - вообще не ок, пропсы нельзя мутирвоать

Плохого ничего и тот и другой подход имеет право на жизнь, но есть аргументы в + отказа от деструктуризации Я лично тоже против неё в пропсах

Ilya Agarkov
снижается читаемость кода. он становиться менее пр...

Мне кажется наоборот неиспользуя деструктуризацию код тяжелее читать Что лучше item.id, Item.food, Item.chunk, Item.totalPrice Или const { id, food, chunk, totalPrice } = item:

Alexey Shevchenko
Аргументы?

я выше расписал

Ilya Agarkov
я выше расписал

Субъективщина значит

Alexey Shevchenko
Субъективщина значит

субьектно на код ревью не видно откуда и что это за id?

Alexey Shevchenko
Мне кажется наоборот неиспользуя деструктуризацию ...

Речь не про деструктуризацию в целом, а только в контексте пропсов

Ilya Agarkov
субьектно на код ревью не видно откуда и что это з...

Если в компоненте всего 1 цикл и 1 ацди то деструктуризация круче

Ilya Agarkov
а если не один?

Разбивать компоненты так чтобы были по 1 циклу мб

Alexey Shevchenko
Разбивать компоненты так чтобы были по 1 циклу мб

а если у меня это именно специфика компонента?

Alexey Shevchenko
Если в компоненте всего 1 цикл и 1 ацди то деструк...

если так то так если не так то эдак… Зачем иметь такие сложные стандарты написания кода? нужно иметь одно решение для одной задачи

Ilya Agarkov
если так то так если не так то эдак… Зачем иметь т...

Нет аргументов у меня для этого) Интересная позиция, пересмотрю своё отношение к коду других людей, когда делаю рефактор их кода в деструктуризацию

потому что источкник данных важен? item.title = “some value” - это валидный код?

Ilya Agarkov
потому что источкник данных важен? item.title = ...

Я немного не пойму, если к тебе в компонент приходит item, зачем ты его перезаписываешь? Может мы про разные вещи говорим.

Павел
Я немного не пойму, если к тебе в компонент приход...

дак в том то и дело что в этом строчке не понятно, это что-то что пришло из вне или что-то локальное (ведь все так любят разбирать пропсы на части)

Ну вот у меня есть компонент, я все таки не пойму почему этот код плох из-за деструктуризации ? Мне кажется ты что-то другое прям имеешь ввиду

Павел
Ну вот у меня есть компонент, я все таки не пойму ...

Во время код ревью ты смотришь не весь файл а участок с изменениями. Изменения могут не затрагивать вышестоящий код и хрен пойми это пропс, стейт или вообще просто переменная левая или вообще импорт откуда-то

Павел
Ну вот у меня есть компонент, я все таки не пойму ...

а давай расмотрим пример более сложного компонента и при этом не в редакторе а в diff пул реквета на гитхабе

Bohdan Bida 🇺🇦
Во время код ревью ты смотришь не весь файл а учас...

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

Bohdan Bida 🇺🇦
Плохого ничего и тот и другой подход имеет право ...

шта, впервые вижу, чтобы деструктуризацию кто-то хейтил, особенно в аргументах

я старый и ленивый человек, зачем мне весь этот оверинжениринг? 😂 когда на тебе висит 5 пул реквестов и все надо просмотреть вчера - ни о каком покомитно и речь быть не может. Тем более что далеко не все “покоммитно” все делают

если отказ от нее приводит к более читаемому коду -то зачем она нужна? ну кроме случаев когда она нужна чтобы выкинуть какие то значения из объекта)

Ilya Agarkov
если отказ от нее приводит к более читаемому коду ...

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

Ilya Agarkov
я старый и ленивый человек, зачем мне весь этот ов...

Ну тогда это не код ревью) да и энивэй, проще поставить локально, глянуть что все билдится, затем посмотреть на сайте. То что будет item.Id или Id не особо повлияет

Alexey Shevchenko
Ну тогда это не код ревью) да и энивэй, проще пост...

что все билдиться провереся не локально, а на ci/cd

Ilya Agarkov
что все билдиться провереся не локально, а на ci/c...

Ну у нас саяйсиди настроен на девелоп ветку, отдельные ветки не деплоятся. Поэтому чтобы узнать что сбилдилось нужно либо настраивать сияйчиди для веток целиком/пул реквестов, либо делать тестовый пуш в девелоп и откатываться назад если что (говно варик)

"надо идти и смотреть а откуда этот item" Так нефиг делать компоненты в 100500 строк...

Max Kiner
"надо идти и смотреть а откуда этот item" Так нефи...

1 ему не нужно быть 100500 строк чтобы не отображаться польностью в гите 2 большой компонент не плохо, плохо - комопонент который решает несколько задач одновременно 3 красивые сказки про маленькие компоненты совсем не описывают ситуацию в реальном мире

Ilya Agarkov
1 ему не нужно быть 100500 строк чтобы не отобража...

1. Нажать кнопочку, чтобы показать ещё 20 строк - совсем не проблема 2. Согласен, но декомпозицию не просто же так придумали) отделение логики от view и т.п. 3. Это не значит, что не надо стремиться к лучшему)

Max Kiner
1. Нажать кнопочку, чтобы показать ещё 20 строк - ...

2 - не объязательно речь про логику Вью может быть большим и неделимым. Например очень большая форма

Bohdan Bida 🇺🇦
2 - не объязательно речь про логику Вью может быт...

На степ форму делите. Не делайте моих глупых ошибок

Bohdan Bida 🇺🇦
2 - не объязательно речь про логику Вью может быт...

Ну это скорее исключение... Хотя некоторые формы легко делятся на смысловые блоки

Назар Швець
На степ форму делите. Не делайте моих глупых ошибо...

Зависит от дизайна Степ форма может быть даже лишней

Bohdan Bida 🇺🇦
Но к сожалению не все

Я и говорю, скорее исключение

Bohdan Bida 🇺🇦
Зависит от дизайна Степ форма может быть даже лишн...

Ну в форму на 20 полей тяжко заполнять, а вот 4 по 5 уже легко

Ну даже 5-8 уже компонент может быть не самым маленьким Как минимум на 70 строк растянуть можно если атрибутов много используется и юз эффектов всяких

Можно вопрос по рефакторингу? У меня есть на сайте таблица для десктопа и лист айтемс для мобилки Верстка примерно идентичная. Логично было бы сделать общий компонент РоуАйтем, и ещё логично было бы общий компонент, где по пропсе view=“table” | “list” рендерить роуайтемы Так вот, стоит ли оставить дублирование кода или пихнуть все в 1 компонент с пропсой вью?

Bohdan Bida 🇺🇦
Ну даже 5-8 уже компонент может быть не самым мале...

Я всегда пушу разделение на степы по логическим блокам: 1) Основная инфа 2) Какие-то даты 3) Что-то другорядное ...

Назар Швець
Я всегда пушу разделение на степы по логическим бл...

Тогда можна будет эти степы ещё переюзать в другой форме🙃

Alexey Shevchenko
Можно вопрос по рефакторингу? У меня есть на сайте...

Мб пропса не нужна и достаточно класса модификатора решая всё на уровне цсс

Назар Швець
Тогда можна будет эти степы ещё переюзать в другой...

Ну, это хорошо, очень, не спорю Но к сожалению не универсально

Alexey Shevchenko
Можно вопрос по рефакторингу? У меня есть на сайте...

слишком абстрактно) по умолчанию выглядит как совсем разное представление, я бы скорее разбил на два компонента. Но надо смотреть конкретнрый случай

Alexey Shevchenko
Можно вопрос по рефакторингу? У меня есть на сайте...

Попробуй посмотреть под призмой принципа Барбары-Лисков. Вынеси всё общее у них, в отдельный компонент. А всё что различаеться в другой. Если не получаеться вынести, значит ненадо.

Назар Швець
Попробуй посмотреть под призмой принципа Барбары-Л...

Ну вот я и решил что повторяется у них более менее <TableRow> и <BoxRow>

Ilya Agarkov
потому что источкник данных важен? item.title = ...

Думал над твоим вопросом вчера. Вот это видео наверное немного прояснит тебе ситуацию. Поставил таймкод, там минут 5, после него у тебя должны отпасть все вопросы по поводу изменяемости, так как у тебя в коде . И тогда деструктуризация не будет тебе мешать. https://youtu.be/JRA2JpqAjlw?t=275

Павел
Думал над твоим вопросом вчера. Вот это видео наве...

Вообще не понял как это решает проблему?

Павел
Думал над твоим вопросом вчера. Вот это видео наве...

Про декларативность не соглашусь, вот тоже ссылка с привязкой ко времени, там про пример из реальной жизни. (совсем начало разговора про декларативность чуть раньше)

Ilya Agarkov
Вообще не понял как это решает проблему?

Вот он четко объясняет почему так не стоит делать, как ты предложил. Нужно следить за чистотой функции, тогда и не будет таких проблем.

Павел
Вот он четко объясняет почему так не стоит делать,...

а я говорил что надо менять?)) я как раз говорил что если использвоать деструктуризацию то не понятно что ты менешь - внешний параметр или что-то локальное для функции

Ilya Agarkov
а я говорил что надо менять?)) я как раз говорил ч...

Так я про что и говорю, что бы не было таких проблем, у тебя функции должны быть чистые, тогда и отпадет у тебя вопрос, меняет она что-то внутри или снаружи.

Ilya Agarkov
а я говорил что надо менять?)) я как раз говорил ч...

Перечитал, тогда почитай про функции и побочные эффекты, и хорошо это или плохо.

Ilya Agarkov
да причем тут побочные эффекты?

Потому что ты написал, не понимаешь меняет она внешне или что-то внутри.

Павел
Потому что ты написал, не понимаешь меняет она вне...

item.title = “some” меняет что-то внешнее или нет?

Павел
Потому что ты написал, не понимаешь меняет она вне...

из кода не понятно в этом и дело задача как раз и проверить чтобы не меняло

Павел
Если чистая функция, то нет

извини но гитхаб как бы не подписывает какие функции чистые а какие нет

Ilya Agarkov
извини но гитхаб как бы не подписывает какие функц...

Для этого ты и делаешь код ревью, нужно доносить это джунам, что бы они так не делали ))

дак в том то и дело что деструкрутазция мешает делать код ревью

В твоем примере происходит мутация, а в чистых функциях мутации не происходят

Ilya Agarkov
дак в том то и дело что деструкрутазция мешает дел...

Да не мешает она ничего, научи своих бойцов один раз, и не будет у тебя таких вопросов.

Dmitry Ylnui
В твоем примере происходит мутация, а в чистых фун...

Ты статью читал, или просто ляпнул что увидел ?

Павел
Ты статью читал, или просто ляпнул что увидел ?

У тебя спросили: item.title = “some” меняет что-то внешнее или нет? Ты ответил: Если чистая функция, то нет Хотя в чистой функции невозможно item.title = “some”

Dmitry Ylnui
У тебя спросили: item.title = “some” меняет что-т...

Хорошо, так она меняет что-то внешне или нет ? Если это чистая функция

Китикет Базёнка
а, ну ты действительно фигню сказал

что именно фигня ? Можно конкретнее ?

Если мы не хотим ничего мутировать, то нужно const newItem = {…item, title: “some”}

Павел
Хорошо, так она меняет что-то внешне или нет ? Есл...

Ты передаешь же откуда-то объект item в функцию и мутируешь его переопределяя title

Dmitry Ylnui
Ты передаешь же откуда-то объект item в функцию и ...

я нет, он да. И как это по твоему, хорошее поведение для чистой функции ?

Dmitry Ylnui
Думаю что не очень

Ну вот,тогда не пойму претензию к моему высказыванию, в виде твоего "ват"

Ilya Agarkov
дак в том то и дело что деструкрутазция мешает дел...

(где-то я уже писал об этом, не смог найти где) Не соглашусь, ревью - это очень частый пример и если какие-то инструменты его мешают делать - нужно фиксить инструменты. А когда ты работаешь с кодом уже в редакторе при дебаге, например, ты видишь в JSX какие-то props.some.where, но таких штук раскидано 10-15, а в начале реднера ничего нет и не понятно какие данные компоненту реально нужны. Хорошая практика - разделять объявление / вычисление данных и их отображение. Все что нужно в шаблоне нужно сначала вытащить и предрасчитать в понятные переменные, а потом напрямую использзовать.

а при мемоизации так не будет возникать проблем? предположим, что компонент получает какую-то пачку пропсов, часть из них уходит в useMemo, useCallback и при использовании зависимостей в виде props.item.lalala в комбинации с преттиром массив deps будет раздуваться по линиям кода

Firstname Lastname
а при мемоизации так не будет возникать проблем? ...

большое кода(точнее символом) не значит хуже

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта