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

88 ответов

43 просмотра

снижается читаемость кода. он становиться менее предасказуемым. куда лучшче четко видеть что и откуда 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
а при мемоизации так не будет возникать проблем? ...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта