Обновить

Комментарии 3

Впечатляет, что взяли реальные метрики через dependency-cruiser, а не спор на прозе. У нас был похожий эксперимент: сравнивали Clean и FSD pre-sliced на модуле корзины, и права доступа в обоих случаях текли не туда, потому что ни одна архитектура явно не описывает где жить авторизации на уровне UI. Завели отдельный слой policies/ поперёк обеих схем. У вас в стенде такие сквозные штуки разложены по шести вариантам, или это отдельная категория?

Спасибо, хороший вопрос — Вы как раз попали в одно из ограничений текущего стенда.

В этой версии авторизация не выделена в отдельную категорию и системно не разложена по всем шести вариантам. Кейс с утекшими проверками прав во вступлении был исходной мотивацией, но в измерительную часть вошли другие изменения: переиспользование карточки, удаление промокодов, кэширование каталога и правило доставки. Размещение сквозных политик стенд увы не сравнивает.

Концептуально я бы рассматривал policies/ не как седьмой вариант архитектуры, а как ортогональную границу. При этом полезно разделить получение текущей роли, само правило вида canChangeLimit(user, card) и его применение в UI. В Clean такое правило может находиться в domain/application, в modular — рядом с модулем-владельцем, а в FSD — рядом с owning-слайсом с композицией выше. Отдельный общий policies/ тоже выглядит рабочим решением, если он содержит узкие правила, а не превращается со временем во второй shared.

Ваш эксперимент с корзиной звучит интересно. Отдельный change request на права доступа — например, добавление новой роли или изменение политики без размазывания проверок по UI — был бы хорошим дополнением к стенду. Спасибо за идею, возьму её в список следующих сценариев.

Спасибо за развёрнутый ответ, разложили ровно так как я и предполагал: policies как ортогональная граница, а не седьмой вариант. У нас в итоге разделение получилось похожим, canAccess как чистая функция в domain, а привязка к ролям и подключение в UI уже в application. Если добавите change request на права в стенд, было бы интересно посмотреть как это ляжет на карго-вариант, кажется там утечка будет самой явной.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации