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

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

ангуляр. Я наконец разобрался что это такое и пытаюсь понять как ее правильно применять в ангуляре. Правильно я понимаю что компоненты, например smart , в котором находится бизнес логика - является самым высоким слоем. Следовательно если такой smart общается с redux через абстракцию, то данная абстракция должна лежать в той же папке/модуле что и данный компонент, верно? Сейчас я ложу данные абстракции в папке
module
_services - сервисы
facade - фасады
api - http сервисы

но я думаю насколько это правильно согласно DIP
https://github.com/evoytenkoapps/angular-best-practices#%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0

25 ответов

29 просмотров

в компоненте не должно быть бизнес логики, начнем с этого

Еще и такие вещи как редакс (ngrx) зачастую овервейт для небольших или даже средних проектов

Евгений-Гений Автор вопроса
xxtux Shvets
в компоненте не должно быть бизнес логики, начнем ...

а где она должна быть? и правильно я понимаю что абстракция описывающая доступ к данным должна лежать там?

Евгений Гений
а где она должна быть? и правильно я понимаю что а...

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

Евгений Гений
а что за мартин? можно ссылку?

https://www.piter.com/product/chistyy-kod-sozdanie-analiz-i-refaktoring-biblioteka-programmista-45ccca

Евгений-Гений Автор вопроса
xxtux Shvets
https://www.piter.com/product/chistyy-kod-sozdanie...

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

Евгений-Гений Автор вопроса
xxtux Shvets
в идеале в частях, не связанных с фреймворком. Ком...

делайте коммиты, буду улучшать, не вопрос

Евгений Гений
делайте коммиты, буду улучшать, не вопрос

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

Евгений Гений
так это ж не про ангуляр. а у вас есть пример реал...

компонент отвечает только за view не больше и не меньше. вся логика в сервисах. зачем тебе компонент на 300-500 строк кода?

Евгений-Гений Автор вопроса
xxtux Shvets
спс, как нибудь в другой раз 🤤 в чем смысл делать ...

дайте это 100 проектов, я свой их опытом доплню

Евгений-Гений Автор вопроса
Валентин
компонент отвечает только за view не больше и не м...

а какая разница где хранить это 500 строк кода, когда без них всеравно никуда?

Евгений-Гений Автор вопроса
Валентин
компонент отвечает только за view не больше и не м...

я пока не понимаю что дает вынесение этих 500 строк в другой сервис и сто пудова процентов 20 продублируется в компонент

Евгений Гений
я пока не понимаю что дает вынесение этих 500 стро...

Компонент нельзя внедрять в другой компонент, а сервис можно Логика в сервисе легко переиспользуется

Евгений Гений
а какая разница где хранить это 500 строк кода, ко...

ну вот представь, у тебя компонент на 900 строк кода, дебажить такие макароны то еще удовольствие. проще разбить это все на компонент которые только отрисовывает верстку и к этому компоненту еще 2-3 сервиса, у каждого из них будет своя ответственность. такое и тестами покрыть проще и читать легче, и тестами покрыть попроще

Евгений-Гений Автор вопроса
Maksym G
Компонент нельзя внедрять в другой компонент, а се...

тут. да. а если логика нужна только 1 раз?

Евгений Гений
тут. да. а если логика нужна только 1 раз?

А откуда ты это знаешь? Ванга есть в семье?)

Евгений Гений
тут. да. а если логика нужна только 1 раз?

ну и сделай небольшой сервис строчек на 50 и будет тебе счастье

Евгений-Гений Автор вопроса
Валентин
ну вот представь, у тебя компонент на 900 строк ко...

а если для компонента достаточно 50 или 100 строк логики, тоже в сервис?

Евгений Гений
а если для компонента достаточно 50 или 100 строк ...

на проекте одном где работал было правило "компонент недолжен быть больше 150 строк (цифра условная), если превышает то это повод задуматься о вынесении логики в сервис(-ы)"

Евгений-Гений Автор вопроса
Валентин
на проекте одном где работал было правило "компоне...

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

Евгений Гений
это понятно. но если мы придерживаемся правила что...

Можно выносить логику работы с данными (кандидаты на сервисы) в приватные методы, когда понадобится, приватный метод перенести как публичный в сервис и использовать в 2+ местах...это тоже норм компромис... Называется не прекращающимся рефакторингом (DDD), ну и в чистом коде такое можно встретить...

Евгений Гений
а какая разница где хранить это 500 строк кода, ко...

Уйййй За такие слова в подворотне пацаны могут побить 😅

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

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

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