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

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

13 ответов

13 просмотров

ну а как же 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 для своего удобства и это пропустят. Тут дело не в инструменте, а в человеческом факторе.

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

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

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
А если без шуток, на чем десктоп сейчас пишут кроссплатформенный (ну чтобы с минимальным допиливанием под каждую платформу) и чтобы хорошая производительность софта была. Толь...
🐈
9
Слушайте, а при создании навигации на Tailor рили нельзя определять активный пункт навигации, как в Static Pages?
Pavel Lautsevich
11
Или мне дублировать структуру с информацией о следующем потоке в адресное пространство текущего потока?
One
9
Добрый день, коллеги, подскажите пожалуйста, есть ли кто-то тут, или у кого знакомые Senior / Lead C++, в идеале бы еще с QT с опытом или желанием работать с десктопом? Или эт...
🐈
5
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Карта сайта