Как стать автором
Обновить

Комментарии 31

  1. Вычитывайте статью перед публикацией.

Расширяйте код при помощи прототипизирвоания

1.9 Пользуйтесь покомпонентами Angular Material.

После того, что они учудили при переходе с v14 на v15, начинаешь сомневаться.

Материал изначально ужасен

0.1.1 Ограничение на длину метода: 150 строк.

Многовато как-то. На ангуляре не писал, но обычно свыше 10-20 строк уже стоит задуматься.

Я бы предпочел 50 строк метод нежели измученые 10 вызовов методов ради "качества" кода. Если код требует объёма и нет явных моментов выноса логики, то не надо плодить методы.

50 еще норм, я не топлю за дробление на однострочные методы.
Смысла спорить нет. Нужно разбирать каждый кейс отдельно.
Но я к тому, что сомневаюсь, что метод в 150 строк может соответствовать базовым правилам SOLID, что его адекватно можно покрыть тестами, поддерживать. И сколько новому человеку понадобиться времени чтобы в нем разобраться.
Конечно, есть исключения.

В основном банальные советы, местами очень спорные. Почему это ngrx очень желателен? Без него прекрасно можно жить. Почему использовать material? Каждый раз как с ним столкнусь испытываю ужасную неприязнь. Насчёт использовать lodash вообще молчу, это вообще не имеет отношения к ангуляру, и не является хорошим советом, ибо очень сильно не всегда нужен

Поддержу про NgRx, все эти стейты притянутые из мира Redux далеко не всегда нужны и очень не всегда несут пользу в Angular. Сейчас выпиливаем как раз остатки поделия в виде Mobx, который принес больше боли, чем пользы.

Страшно даже подумать в ползу чего вы его выпиливаете.

Не в пользу, а в корзину... RxJS более чем достаточно для большинства даже вполне тяжелых проектов.

Ок, вот вам простая задачка: у вас есть коллекция из 40к задач. В каждой задаче 20 полей. На одной из сотен страниц выводится 10 списков задач, отфильтрованных отсортированных и сгруппированных по разным полям самим пользователем. 30 раз в секунду вам прилетает событие изменения одного поля одной задачи. Как вы на RxJS реализуете это всё так, чтобы не было адских тормозов из-за ререндера всего приложения 30 раз в секунду?

Я бы взял $mol, чтобы после моего ухода никто бы не смог разобраться в коде!

Всё идет от задач, если вы знаете как это работает под капотом, то для вас не будет никаких проблем это сделать штатными средствами. Всё в Angular по факту базируется на Observable, даже по факту те же сигналы работают на их базе, просто являются сахаром. С любым сахаром придется решать те же проблемы, он легко решает одну проблему и параллельно тихо создает ещё несколько.

То есть вы не знаете как решить эту простую задачку на RxJS?

Вам чё проект надо создать? Рабочие часы оплатите? Если не умеете работать с потоками и проектировать данные, то пользуйте то, что делает это за вас, вам же никто не запрещает

Спасибо, я уже создал. А вам стоит либо сбавить спесь, либо не пороть чушь.

А вот кто бы говорил кстати. Если в моем проекте мне надо забивать гвозди, зачем мне слушать вас с вашими надуманными кейсами и использовать микроскоп для этого? Нет универсальных инструментов.

Вполне реальный кейс: https://www.wrike.com/features/dashboards/

Нет универсальных инструментов.

Докажите.

Для моих задач это максимально надуманный кейс.

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

А ведь вы ничем не отличаетесь в этом плане с тем парнем, который точно так же MobX продвигает :)

Особенно иронично, что свой ответ вы печатали как раз одним из таких "не существующих универсальных инструментов" - рукой.

Тогда удачи порезать хлеб рукой, забить рукой гвозди и рукой же побриться :)

Удачи вам сделать всё это без рук.

Вместо хамства можете объяснить в чем сложность этой конкретной задачи и что помешало решить её обычным RxJs? В задаче не вижу ничего принципиально сложного, разве что поля надо у задачи надо сделать Observable, которые стреляют при обновлении - ну это довольно тривиальный кейс если хотя бы немного работали с Angular.

Сложность в том, чтобы не ререндерить тасклист при изменении полей, от которых результат рендеринга не зависит. Попробуйте сами.

Так на всякий случай, в реализации ангуляровских сигналов нет ни капли Observable

Никто и не говорит, что они прямо наследники Observable. Но если посмотреть на механику и как они встраиваются в шаблон, то там отличий почти нет, по факту всё тоже самое.

Могли бы просто признать ошибку. У вас в комментарии прямо написано: "базируется на Observable, даже по факту те же сигналы работают на их базе, просто являются сахаром". А теперь вы пишите что надо посмотреть на механику... хотя в шаблоны переменные встраиваются похожим образом почти везде.

Статья же про ангуляр, поэтому оценка в рамках ангуляра
Много спорных пунктов, и очень уж устарелой информации

  1. "Ограничение на длину метода: 150 строк." - это очень много, до 50 строк максимум, и даже 50 уже прочитать сложно

  2. "Пользуйтесь покомпонентами Angular Material." - Много UI библиотек и Material не лучшая из них

  3. "Роуты отдельного модуля в RouterModule.forChild" - С standalone компонентами это немного неактуально

  4. "Структура модуля" - Чаще всего эти папочки избыточны

  5. "NgRx - желателен (очень)." - Сомнительный совет, куча бойлерплейта и потраченого времени

  6. "API должно быть гибким." - Api чего? Если для работы с бекендом, то это зависит от бекенда

  7. "Данные должны быть разделены на чанки." - Что тут имеется ввиду? Данные приходят с бекенда, и как сделали апи, в таком виде данные и придут

  8. "Расширяйте код при помощи прототипизирвоания" - В Ангуляре? Как вы это видите?

  9. "Использовать monent.js " - Даже разработчики уже не рекомендуют его использовать

  10. "Использовать JSDoc" - Коментарии нужны только там где сложно прочитать написаный код, писать коментарии ради коментариев очень плохой совет

Расширяйте код при помощи прототипизирвоания

Это больше черта Реакта, а не Ангуляра. Как раз таки это в целом не angular way.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории