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

Например, 5 интеракторов с предельно простым кодом: class InteractorA(val interactorB: InteractorB,

val interactorD: InteractorD)

class InteractorB

class InteractorC(val interactorA: InteractorA, val interactorB: InteractorB)

class InteractorD(val interactorB: InteractorB, val interactorE: InteractorE)

class InteractorE(val interactorC: InteractorC)

Нет ли тут циклических зависимостей?

11 ответов

12 просмотров

А реальный пример можно? А то это слишком синтетически выглядит

Zlatko-Pušić Автор вопроса
Eugene P.
А реальный пример можно? А то это слишком синтетич...

Ну замените в названиях A, B, C на что-то из своего проекта, чтобы получилось, например, AuthInteractor, UserInteractor, BillingInteractor, SubscriptionInteractor и т.д.)

Zlatko-Pušić Автор вопроса

Может ли в каком-то проекте UserInteractor включать в себя AuthInteractor и SubscriptionInteractor? Вполне. А SubscriptionInteractor может использовать внутри UserInteractor? Ну тоже можно так сделать для удобства. Вот и циклическая зависимость.

Zlatko Pušić
Может ли в каком-то проекте UserInteractor включат...

Можно и нужно - разные вопросы. Плюс надо помнить про single responsibility

Zlatko-Pušić Автор вопроса
Eugene P.
Можно и нужно - разные вопросы. Плюс надо помнить ...

Так тут как раз single responsibility не будет нарушен: в примере каждый интерактор как раз специально и выделен, чтобы заниматься одной единственной задачей и делегировать несвойственные ему задачи другим интеракторам)

Если есть, оно не скомпилируется, и я порефакторю, чтобы убрать цикл)

Zlatko-Pušić Автор вопроса
Алексей Ершов
Если есть, оно не скомпилируется, и я порефакторю,...

Почему не скомпилируется? Вполне скомпилируется, хотя да, там есть цикл, но не очевидный, собственно, я это и хотел показать, как легко не заметить циклическую зависимость даже в очень простом случае из нескольких интеракторов (а в реальном проекте обычно их на порядок больше)

Zlatko Pušić
Почему не скомпилируется? Вполне скомпилируется, х...

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

Zlatko Pušić
lateinit же можно)

Ой ужас какой, не пугайте людей на ночь)

Zlatko-Pušić Автор вопроса
Алексей Ершов
Ой ужас какой, не пугайте людей на ночь)

А если реализовать этот пример на синглтонах, так оно тогда даже годами в проде работать сможет, пока однажды не вылезет трики стэковерфлоу)

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Добрый день! Хочу спросить совета. Хочется в скрипт добавить некую конструкцию, что скрипт создал файл, который нужно потом скопировать в определенное место. Нашел такой сп...
Mikhail
4
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
in telegram can i have multiple username? so instead of having multiple account for example one for work, one for friend and one for family with three diff numbers. using one ...
Mr Thieves
6
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
Карта сайта