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

использовать. Старики, может вы, просто, начнете, наконец, перестать ассоциировать компоуз с вью классик?

13 ответов

25 просмотров

ну а как же clean ?

FlyBug- Автор вопроса
Andrew F
ну а как же clean ?

Это путь к клину, точно

Я не в коем случае не утверждаю, что Compose это только UI. И уж точно не призываю следовать Clean. Напротив, я обычно призываю ему не следовать. Но это другая история. Кроме того, я разделяю DI как подход, и DI-фреймворки как инструмент. И всегда выступаю против второго, но за первое. В рамках этой дискуссии, я утверждаю, что применять CompositionLocal для DI - плохо. По причинам, озвученным в документации: https://developer.android.com/jetpack/compose/compositionlocal А именно: 1. Зависимости передаются неявно. Нельзя понять, что нужно для работы конкретной функции и всего её поддерева глядя на её сигнатуру. 2. Нет безопасности во времени сборки - код компилируется даже если зависимость не предоставлена явно. 3. Зависимости доступны всем без исключения дочерним компонентам. Даже тем, которым они не нужны. Если зависимость нужна только в одном самом нижнем компоненте, то она доступна всему поддереву компонентов.

Arkadii Ivanov
Я не в коем случае не утверждаю, что Compose это т...

+++ поэтому мы пихаем только то что нужно буквально всему поддереву. Например аналитика

Arkadii Ivanov
Я не в коем случае не утверждаю, что Compose это т...

Первые две решаются тестами, которыми решаются эти же проблемы во многих других не статических DI-решениях. Третья довольно странная претензия. У тебя редко когда перекрывается доступ к данным, в лучшем случае нельзя прямо обратиться и взять. А если что-то нужно на определённом месте в поддереве, то ничто не мешает расположить эти данные прямо над этим поддеревом.

Konstantin Dovnar
Первые две решаются тестами, которыми решаются эти...

Отсутствие типов в JS тоже решается тестами. Однако сделали typescript. Чем раньше выявляется проблема, тем лучше. Кроме того я смотреть тесты, чтобы понять, какие local проставить - это на мой взгляд кошмар

Arkadii Ivanov
Отсутствие типов в JS тоже решается тестами. Однак...

Тут уже вылезает вкусовщина и удобство. >Кроме того я смотреть тесты, чтобы понять, какие local проставить - это на мой взгляд кошмар Зачем? Всё проще. Тесты тебе сообщат, если чего-то по дереву не хватает.

Konstantin Dovnar
Тут уже вылезает вкусовщина и удобство. >Кроме то...

Я про свой пункт номер 1. Понимания необходимых зависимостей при взгляде на функцию. Например я когда надо её переиспользовать.

Arkadii Ivanov
Я про свой пункт номер 1. Понимания необходимых за...

Понимаю. Не вижу в этом прям ужасной проблемы, но да, в некоторых ситуациях может быть неудобно.

FlyBug- Автор вопроса
Arkadii Ivanov
Я не в коем случае не утверждаю, что Compose это т...

Спорно, ведь можно создать скоуп-зависимоть над нужной функци,

Arkadii Ivanov
Я про свой пункт номер 1. Понимания необходимых за...

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

Алексей Гладков
Проблема с неявностью ещё в том что никто не знает...

С тем же успехом кто-то заменит что-то в DI для своего удобства и это пропустят. Тут дело не в инструменте, а в человеческом факторе.

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
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
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта