Выбор ответа Middle Модульность обновлено
Циклические зависимости модулей
Вопрос
Модуль A зависит от B, а B от A. Что с этим делать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вынести общую часть в третий модуль или ввести интерфейс в одном из них и инвертировать зависимость. Gradle и SPM не допускают циклы между модулями.
Варианты ответа
- Ничего: Gradle и SPM разрешат цикл сами, собрав оба модуля за один общий проход компиляции без ошибок
- Объединить все модули проекта в один, раз граница между ними провела себя неудачно
- Вынести общую часть в третий модуль или ввести интерфейс в одном из них и инвертировать зависимостьправильный ответ
- Сделать оба модуля динамическими фреймворками: тогда символы разрешатся при загрузке
Разбор
Gradle и SPM не допускают циклы между модулями. Цикл говорит о том, что граница проведена неверно. Решения: выделить общий код (модели, контракты) в отдельный модуль или объявить интерфейс в нижнем модуле и реализовать в верхнем (инверсия зависимостей). Слияние всего в один модуль отменяет смысл модульности. Тип линковки цикл не решает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Модульность»
- Почему сборка не ускорилась после модуляризации
- Инструменты модуляризации на Android
- Инструменты модуляризации на iOS
- Типы модулей мобильного приложения
- api и implementation в Gradle
- Статические и динамические модули на iOS
- Как вынести фичу из монолита в модуль
- Модули и команды