Тұзақ
Clean Architecture бастапқы кезеңде ең жоғары бағаланған нәрселердің бірі. Ал ұзақ мерзімде ең бағаланбағандардың бірі. Мәселе мынада, оны не құдайдай көреді, не мүлдем елемейді. Екі нұсқа да қате. Мен қарапайым өнімде шағын команда толыққанды DDD-ді Clean Architecture, көптеген қабаттар мен интерфейстермен құрып жатқан жобаларды көрдім. Нәтижесінде: әзірлеу баяу, құрылымды бәрі түсінбейді, кіру шегі жоғары. Және басты сұрақ - не үшін?

MVP-ке Clean қажет емес
Егер сенде 1–2 адамнан тұратын стартап болса және сен MVP жазып жатсаң, саған Clean Architecture қажет емес. Мүлдем. Бұл кезеңдегі сенің мақсатың: гипотезаны тез тексеру, фичаларды шығару, өнімнің бар-жоғын түсіну. Осы контексте қабаттар, DTO, интерфейстер, доменді бөлу тек қана баяулату болып табылады.
Көптеген адамдар «кейін қайта жасамау үшін бірден дұрыс жасау» деп тырысады. Бұл логикалық естіледі. Іс жүзінде — олай емес. Сен өнімнің қандай болатынын, қай жерде жүктеме болатынын және не қалатынын білмейсің. Және әлі жоқ болашаққа жобалай бастайсың.
Clean шынымен қажет жерде
Clean Architecture өнім өскенде, команда пайда болғанда, кадрлардың ауысуы басталғанда және код ұзақ уақыт өмір сүргенде қажет. Бұл сценарийде ол болжамды құрылымды, жылдам онбордингті және өзгерістерді басқаруды қамтамасыз етеді. Қарапайым бағдар: егер жаңа әзірлеуші 1–2 апта ішінде жобаға кіріссе — архитектура жұмыс істейді. Егер олай болмаса — сіз тек күрделендірдіңіз.
Кері шектен шығу да бар: «бізге Clean мүлдем қажет емес» — және өсу жалғасады. Сонда нақты мәселелер басталады: код кеңейеді, тәуелділіктер араласады, өзгерістер қымбатқа түседі. Бір сәтте қайта жазуға тура келеді.

Эволюция, дін емес
Дұрыс тәсіл — эволюция. Алдымен қарапайым код, жылдам MVP. Кейін түсінік пайда болады, тар жерлер анықталады, тек содан кейін құрылым енгізіледі. Clean Architecture — бұл «жалауды қосу» емес. Сіз бәрін бірден жасауға міндетті емессіз: домен, DTO, мапперлер, репозиторийлер. Сіз бұған нақты қажеттілік пайда болған кезде келесіз.
Иә, тесттерді бірден жазған дұрыс, олар кодты қауіпсіз өзгертуге және құрылымды біртіндеп енгізуге мүмкіндік береді. Негізгі сұрақ әрқашан бір: бұл қазір әзірлеуді жеделдете ме, әлде баяулата ма? Әзірлеушінің жетілуі бұл «әрқашан дұрыс жасау» емес. Бұл оның қашан нақты қажет екенін түсіну.