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

Привет. Сорри, если уже было, киньте в меня ссылками, если

что. :)
Как бы по вашему мнению бы следовало решать навигацию между экранами?
Нынешняя архитектура - мввм со стэйтами, навигация на основании состояния запускается через вью модели.
У коллеги возникла идея передвинуть переходы (через интерфейс, разумеется) на бизнес уровень, прям в юз кейс. Аргументирует это тем, что переходы между экранами/окнами на всех платформах, мол, одинаковые, это часть бизнес логики, куда после чего идти, а вьюмодел только стэйт пусть помогает отображать.

13 ответов

7 просмотров

А бизнес логике разве важно на каком экране что отображается?

Ju- Автор вопроса
Artem Osipov
А бизнес логике разве важно на каком экране что от...

В том-то и дело, что все привыкли считать, что нет. Я тоже так считаю, спорим вот. С другой стороны, вью модели в идеале не должны ничего знать о других экранах. Вот и спрашиваю, интересно, как другие это решают. :)

Ju
В том-то и дело, что все привыкли считать, что нет...

роутинг является бизнес логикой, и как раз таки роутеры могут быть вынесены.

Ju- Автор вопроса
Daniil Tsaryov
роутинг является бизнес логикой, и как раз таки ро...

Это понятно, вопрос на каком уровне их объединить. Я бы сделала отдельно роутер и отдельно юз кейс для данных, мерджнула их во вью модели. Он же, получается, роутер в юз кейс засунул, грубо говоря.

Ju
Это понятно, вопрос на каком уровне их объединить....

На мой взгляд юз кейс не должен знать про роутинг, сам роутинг может быть следствием юз кейс, но не в жёсткой с ним связке. Имхо, поместить роутер и юзкейс/интерактор во вью модель это окей

Ju- Автор вопроса
Daniil Tsaryov
На мой взгляд юз кейс не должен знать про роутинг,...

Спасибо. :) Теперь, надеюсь, будем спорить, как именно их объединять, но это уже совсем другая история.

Ju
Это понятно, вопрос на каком уровне их объединить....

А роутер в виде activity уже не модно нынче применять? Через колбэк с фрагмента отправлять код события и пусть activity решает что делать дальше

Ju
Спасибо. :) Теперь, надеюсь, будем спорить, как им...

Роутинг лучше всего выполнять на Presentation слое (не на domain). Потому что навигация относится больше к инфраструктуре, чем к бизнес правилам. И лучше его делать через делегирующий объект

Jorik Fat
Роутинг лучше всего выполнять на Presentation слое...

Наверное это очень просто гуглится, если знать как гуглить, но. Не могли бы поделиться ссылкой на код, где навигация сделана посредством делегирующего объекта, пожалуйста?

Ju- Автор вопроса
Руслан
А роутер в виде activity уже не модно нынче примен...

Это было бы удобно, если бы приложение было с одной активити. Сейчас же оно поделено на фичур модули, у каждого своя активити. Я бы даже не колбэк посылала, а ивент бас какой, и в активити бы на него подписалась. Только не очень представляю, как это делать с большим количеством активити, я привыкла к архитектуре с одной мэйн (ну, и логин там какой или регистрация отдельно со своей навигацией).

Ju- Автор вопроса
Jorik Fat
Роутинг лучше всего выполнять на Presentation слое...

Вообще, именно это является основной причиной спора. Мне тоже кажется, что навигация - это просто инфраструктура. Оппонент же утверждает, что с точки зрения бизнеса *важно*, куда пользователь перейдет после того или иного действия, более того, на всех платформах переходы в принципе будут одинаковые, потому что так этого хочет бизнес. И, мол, если когда-нибудь бы перейдем на KMM (даже речи быть не может, как по мне, это решение надо было принимать год назад), то у нас уже всё будет готово, в том числе общая навигация.

Ju
Вообще, именно это является основной причиной спор...

А потом придут дезигнеры и нарисуют новую красивую навигацию. И можно будет переделывать бизнес-логику 😁

Ju
Это было бы удобно, если бы приложение было с одно...

если у Вас бизнесу важно как происходит навигация - значит у Вас некорректно выделены слои. Так как домен может быть переиспользован между несколькими приложениями

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта