Чому UI не повинен залежати від бізнес-логіки?
Тому що UI - це лише спосіб показати дані, а бізнес-логіка - зміст цих даних. Коли інтерфейс залежить від логіки, вони стають жорстко зв'язаними, і будь-яка зміна одного ламає інше.
Ось ключові причини:
1. Бізнес-логіка має бути незалежною від способу відображення
UI може бути веб-сторінкою, мобільним застосунком, голосовим інтерфейсом - а правила бізнесу залишаються тими самими. Якщо логіка "зашита" в UI, ти не зможеш повторно використати код в інших інтерфейсах - доведеться дублювати.
2. UI часто змінюється, бізнес-правила - рідко
Дизайн, фреймворки, UX-патерни застарівають кожні кілька років. Якщо UI напряму залежить від логіки, кожне візуальне оновлення стає ризиком для бізнес-механіки (наприклад, розрахунків, валідації, перевірок).
3. Тестованість
Бізнес-логіка, яка не залежить від UI, легко тестується юніт-тестами - без браузера, кнопок та інтерфейсів. Якщо логіка вбудована в UI, тестувати можна лише через end-to-end-тести - повільні й крихкі.
4. Принцип інверсії залежностей (D із SOLID)
UI має залежати від абстракцій бізнес-логіки, а не навпаки.
Це робить систему гнучкою: логіка визначає інтерфейси (наприклад, IUserService), а UI просто їх використовує.
Так можна змінити UI, не торкаючись ядра.
5. Стійкість до змін
Якщо завтра вирішиш перейти з React на Flutter - UI можна переписати, не чіпаючи use-cases і domain. А якщо вони зв'язані напряму, переробляти доведеться весь застосунок.
Висновок: UI - це «одяг» системи. Бізнес-логіка - її «організм». Якщо «одяг» починає керувати тим, як функціонують органи, тіло довго не проживе.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.