TGViewer
import __hello__ import __hello__ @import_hello · 268 subscribers
Post #43 463
Clean Architecture isn't understood by article authors

Один із улюблених постів на реддіті про помилки які найчастіше допускають автори статей про Clean Architecture. У коментарях зазначили що це мабуть через те що Роберт Мартін поганий письменник (і поганий комунікатор, і погана людина, і поганий гравець у гольф 😄)

Тож перелік того що найчастіше люди неправильно розуміють у CA:

- Контролери (або Презентери або ViewModels) зовсім не теж саме що і Use-Case Інтерактори. Контролери не мають містити логіки, а мають просто викликати методи Інтеракторів. Єдина логіка що вони можуть містити - мапити дата обʼєкти контролера у доменні ентіті.
- Юніт-тести майже виключно повинні писатися для Інтеракторів (а не для кожного маленького класу).
- Юніт-тести мають заміняти вам Acceptance та Функціональні тести. Ви не повинні писати E2E UI тести якщо використовуєте Clean Architecture. Юніт-тест повинен безпосередньо описувати користувацьку історію. Кожен крок у цій історії це "unit".
- Єдині моки що ви використовуєте у своїх юніт-тестах мають бути для output портів, що зазвичай означає DAO інтерфейси.
- Юніт-тести ніколи не повинні запускати код адаптерів. Дивись попередній пункт (здається що більшість це розуміють).
- Інтеграційні тести потрібні лише для перевірки ваших адаптерів, а не тестування бізнес-логіки.
- Автоматизовані тести GUI (наприклад, selenium) повинні писатись лише як smoke-тести. Вони просто перевіряють, що все працює разом, як супер-інтеграційний тест. Таких тестів повинно бути дуже мало.
- Дата об'єкти специфічні для Адаптерів не повинні перетинати межі портів (port boundaries). Наприклад, модель ORM обʼєкту не повинна бути доступна для об'єкта сервісу або Інтерактора. Інтерфейс DAO (тобто порт) повинен повертати доменні сутності замаплені з сутностей БД (здається що більшість це розуміють).
- Домен, сутності та інтерактори не повинні бути побудовані фреймворками. Вони повинні бути простими об'єктами.
- Звичайно, можуть бути прагматичні винятки з усього вищезазначеного, але мінімально.

Усе вищесказане також валідне й для Гексагональної Архітектури і архітектури Портів та Адаптерів, так як вони майже ідентичні CA.
  • 👍 7
More from @import_hello
  1. Aug 26, 2026Саме час https://www.eveonline.com/news/view/the-move-to-python-3-begins
  2. Jan 13, 2026СЮЮДИИ https://pyfound.blogspot.com/2025/12/anthropic-invests-in-python.html
  3. Dec 31, 2025З НР🎅
  4. Dec 9, 2025Ось вам і до сьогоднішнього дня підказка, не дякуйте
  5. Dec 2, 2025Хто застряг на 2 дні - ось підказка
  6. Dec 1, 2025Ну шо, поїхали https://adventofcode.com/2025/day/1
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →