Архитектура без фетишей

Видел в проектах:

– IUserUseCase - UserServiceImpl - UserRepository - PgUserAdapter – UserAggregate, UserEntity, UserDto, UserModel — всё про одного юзера – CommandBus, EventBus, QueryHandler — в CRUD-е на три метода

Вместо рабочего кода — культ архитектуры.

Что модно (и часто бесполезно):

Clean Architecture — 4 слоя прокладок. Половина — просто return next(). • DDD — доменная модель ради модели. Предметки нет, названия остались. • Hexagonal — “порты/адаптеры”, но один порт, один адаптер, всегда вместе. • CQRS — два класса вместо одного. Зато “правильно”. • Event-driven всё — даже если можно было вызвать функцию. • SOLID — звучит строго, но на практике усложняет там, где не нужно.

Что реально работает: – DRY - один раз написал, используешь, где нужно. – KISS - чем проще, тем лучше. – SRP — код делает одну вещь. – DIP — зависимости подменяемы, логика изолирована. – Явные зависимости — без сервис-локаторов и “магии”. – Простая структура — transport → logic → storage. – Меньше абстракций — проще читать, проще менять.

Не пиши код для Дяди Боба. Пиши для следующего инженера. Не строй архитектуру как диплом. Строй так, чтобы не было стыдно жить с этим через полгода.

Архитектура — не манифест. Это способ не получить стрелу в колено через месяц.