Обновить

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

Ваша ошибка изначально в том что Вы "повелись" за маркетингом ибо Bloc захватил умы флаттеристов. Но по сути он не имеет ничего общего с логикой а подменяет ее. Логика это способ мышления А Bloc подменяет его "классовой сущностью". Кирпич не являетcя логикой он инструмент логического потока. С течением времени Вы сами к этому пришли И это говорит о том что Bloc не лучшее решение в больших проектах

Хотите "чистой архитектуры" - возьмите за правило никогда не писать во flutter коде ничего что не рисует картинку. Вообще ничего. Все что хоть что-то считает - отдельная библиотека на чистом dart.
Это правило для себя я вывел на первой приложуньке.
На второй правило дополнилось - все что считает хоть что-то обязано всегда инициироваться с Isolate.spawn(). Ничего считающего, получающего из сети, и вообще делающее хоть что-то не рисующее не может быть в основном изоляте с рендерингом. Основной изолят должен только получать что-то от других и соответсвенно реагировать на эти сообщения.
Я не особый сторонник "чистой архитектуры" но с этими правилам что-то подобное получается само по себе.

Она делит приложения на слои: presentation (UI), domain (бизнес-логика) и data (слой данных).

В жёлтой книжке такого не написано, это уже народное творчество :). Роберт Мартин нам сказал, что лепите сколько угодно слоёв, пока зависимости в православную сторону смотрят.


<toxic>

event handlers в блоке превращаются в чистые функции

Когда вызов функции тождественен результату её выполнения - это чистая функция. Всё остальное - не очень. В вашем примере почти чистые, осталось только эмиты убрать :)

Можно использовать любой контейнер DI или вручную передавать сервисы и блоки в конструктор use‑case, без необходимости прокидывать их в блок. Это уменьшает связанность ...

А зачем блоки прокидывать в блок? И где тут меньше связанности, чем было, если просто стало на сущность больше?

BLoC остаётся стейт‑менеджером, не выполняя ничего

Согласен, приведённый пример кода прекрасно бы вписался по адресу https://refactoring.guru/smells/middle-man

Обсудим внизу статьи — чем больше реальных примеров, тем полезнее для сообщества.

Автор привёл ровно ноль реальных примеров, прежде чем завершить статью этим утверждением.
</toxic>

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


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

Публикации