• В каких случаях использовать Redux?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Да, но Redux-интрументы будут утеряны, насколько я понимаю, либо придется вручную их адаптировать. Плюс Redux не дает создать вложенные состояния, насколько я понимаю, в отличие от контекста, которые можно вкладывать друг в друга.
  • В каких случаях использовать Redux?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Можете привести пример проблемы при нескольких источниках правды?

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

    Скажем, todo-лист можно поменять из 10 компонентов, и без разницы как они это сделают (Redux или без него), состояние всё-равно будет общее, и если закралась ошибка, всё-равно придется дебажить кто вносит ошибку и почему.

    Ощущение что речь идет скорее про кривой кодинг, когда может быть разное состояние одной сущности, которое может конфликтовать, но даже представить такой случай не могу при нормальной реализации (т.е. минимум внедряя единые точки изменения состояния в виде сервисов или просто методов). Похоже что Redux решает такие проблемы просто отсекая возможность их допустить на корню. Есть action'ы и редьюсеры, и распишитесь, всё.

    Дмитрий Беляев
  • Правильно ли я понимаю идею Redux?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    DimaIs, Так это не будет каша, если у нас приложение на 100 вьюшек, и в общем хранилище будет довольно много ключей? Это не проблема?

    И вообще, это нормально практика, когда состояние, которое нужно шарить между компонентами одного роута, мы выносим в глолбальное хранилище данных приложения? Как обычно решается задача обмена данными между компонентами одного роута, если эти данные больше нигде в приложении не нужны?
  • Как в Реакте красиво модифицировать поведение одного компонента?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Так это будет миллион компонентов. Это одна из типичных ошибок композиции поведения объектов, описанная Робертом Мартином, и на иногда решается через мост. В случае нашей области, у нас есть директивы (обычно).

    Вопрос в том, что имеет Реакт, иначе это адский ад, делать столько компонентов.

    Выглядит так, что кроме как делать композицию поведения вручную (через библиотеки, например), и потом под этот новый класс делать отдельный компонент, вариантов нет.
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Я тоже так думаю. Похоже, что нужно их в голове и при их помощи проектировать решение, но не натягивать сову на глобус. Т.е. пишем код, решаем наши задачи, но когда видим явную необходимость внедрить некоторое решение уже решенное паттерном, его можно применить.

    Спасибо
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    sim3x,

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


    Так а что делать, как вы считаете?

    Если так не делать, получится относительно жесткое довольно простое решение.
    Если делать, получится сова на глобусе.

    Вы сами пришли к вопросу, который я изначально задал.
    Что вы думаете то, в результате?
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Roman, Спасибо, не знал про него. Насколько я понимаю, это про использование одного решения под всё, и про неверное использование инструментов, т.е. это к паттернам напрямую не относится.
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    sim3x,

    Я также дополнительно укажу, что преждевременная оптимизация и попытки сделать "архитектуру" на временном проекте, также отвратительны как и монолит

    Да, поэтому эта тема и создана
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    >Для мидл+ утверждение не верно
    Тогда пишите всё ваше приложение в одном классе, и посмотрим какое хорошее у вас получится приложение, товарищ знаток J

    Задача это не только бизнес, это еще и техника. Не подумав о технической стороне вы обрекаете приложение на тотальный рефакторинг по требованию новых фич. Т.е. вы изначально пишете потенциально легаси систему.

    Это называется перерасход трудозатрат в N-раз, и потенциально убийство проекта.

    Если я вас не так понял, объяснитесь, пожалуйста?
    Мы в интеллигентном обществе, здесь положено аргументировать свои мысли, а не просто разбрасываться утверждениями и громкими словами.
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Мы разработчики, мы не менеджеры. Если мы будем идти на встречу управлению, мы в итоге превратим проект в монолитного монстра и он будет невероятно неподвижным. Проходил это не один раз, поэтому наша задача работать максимально качественно, и драться за качество насмерть.

    Понимаю о чем вы, мы все постоянно в этом живем, это реальность, и так почти везде. Правда, есть проекты где можно выбить большой бюджет, и если можно сделать хорошо, почему нет?
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    К слову, написать код решающий задачу, это далеко не правильное решение задачи. Работающее решение и хорошее решение, это не всегда одно и то же. Если вы давно в разработке ПО, вы должны это знать.

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

    Такое решение плохое, даже если оно и работает.
  • Какие есть рецепты по использованию паттернов?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Вы попали в точку, это мой пробел, который я стараюсь заполнить, но пока выходит что от него толку крайне мало.

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

    Похоже, что вы сами запутались, поэтому, какие ваши рецепты и почему?
    В этом и вопрос.
  • Как определить тип переменной в цикле?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Тайпгард это костыль, тогда, поэтому не вариант, да и не всегда подходит.
    У меня как-раз итератор, и про
    <IterableIterator<number>>myIterable<code> не знал, это то что нужно, спасибо!
  • Chain Of Responsibility vs Event Bus, в чем принципиальная разница?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Это уже детали реализации, в обоих случаях можно сделать прерывание работы следующих обработчиков, как и управление порядком вызова через приоритезацию. Делаем внутри Event Bus управляемую очередь вызовов обработчиков с возможностью внешнего прерывания, добавляем приоритеты вызова при подвязке на события, и всё будет работать точно как и в Chain Of Responsibility, поэтому, не убедили. Да, получится смесь EB + CoR, т.е. второй паттерн будет реализован на базе шины событий, и тогда мы, как вы сами сказали, получаем еще меньшую связанность.

    В целом, это меня надвинуло на мысль, что это разрушает сам смысл сказанного выше. В том и разница, что Event Bus не позволяет исходно делать прерывания. Если мы добавим приоритеты и прерывание, это будет уже не чистый Event Bus, а как-раз помесь этих паттернов.

    Получается, не надо путать результат дополнения к реализации к паттерну с самим исходным паттерном. И выходит, что оба паттерна отличаются в корне.

    Спасибо
  • Chain Of Responsibility vs Event Bus, в чем принципиальная разница?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Вторая мысль, это достижение порядка обработки, который при Event Bus решается только через приоритезацию, что намного сложнее.
  • Chain Of Responsibility vs Event Bus, в чем принципиальная разница?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Пока есть одна мысль, это Tree of Responsibility, это позволяет создать более сложные цепи обработки, которые никак не достичь при помощи Event Bus, который всегда линейный.
  • Сводит предплечье при печати, кто сталкивался?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    RomanYakimchuk, К слову, мне тоже это "очень быстро" показалось странным, в последней редакции я написал по-другому, чтобы троллингом не казалось :)
  • Сводит предплечье при печати, кто сталкивался?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    hint000
    Нет, конечно. Скорость 400-600 получается с ошибками, конечно, но нажатий всё-равно много.
    Да и пишу с перерывами. Набираю быстро, но немного (предложение, и далее пауза в несколько секунд), поэтому клавиатуры живые, у них вполне штатные нагрузки.
  • Как научиться понимать английский язык на слух? Это вообще возможно?

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

    Смотрите learnathome.ru, lingualeo.com, english-films.com
  • Почему можно переопредилить функцию, которая на входе требует иной сигнатуры?

    yakimchuk-ry
    @yakimchuk-ry Автор вопроса
    Судя по всему, понял в чем дело. Я не обнаружил приведения типов, но проверку TS всё же производит, даже если в сигнатуре присвоенной функции нет аргументов. Он проверяет не по фактической сигнатуре функции, а по сигнатуре функции, указанной в типе переменной. Таким образом проверяются лишь точки вызовов функции, и сигнатура функции на предмет соответствия ожидаемому типу. Даже подсказки при вводе показываются из типа, а не из самой функции.

    https://bit.ly/2UTMhiR
    В том числе автоматическое приведение, как видите, не работает.