Слайсы и сегменты
Слайсы
Слайсы - это второй уровень в организационной иерархии Feature-Sliced Design. Их основное назначение - группировать код по его значению для продукта, бизнеса или просто приложения.
Имена слайсов не стандартизированы, поскольку они напрямую определяются бизнес-областью вашего приложения. Например, фотогалерея может иметь слайсы photo
, create-album
, gallery-page
. Для социальной сети потребуются другие слайсы, например, post
, add-user-to-friends
, news-feed
.
Близко связанные слайсы могут быть структурно сгруппированы в одной папке, но они должны соблюдать те же правила изоляции, что и другие слайсы - в этом каталоге не должно быть никакого кода для совместного использования несколькими слайсами.
Слои Shared и App не содержат слайсов. Это связано с тем, что Shared не должен содержать никакой бизнес-логики, следовательно, не имеет значения для продукта, а App должен содержать только код, относящийся ко всему приложению, поэтому в разбиении нет необходимости.
Правило публичного API для слайсов
Внутри слайса код может быть организован как угодно, и это не создаст никаких проблем до тех пор, пока срез имеет качественный публичный API. В этом суть правила публичного API для слайсов:
Каждый слайс (и сегмент на слоях, не имеющих слайсов) должен содержать определение публичного API.
Модули вне этого слайса/сегмента могут ссылаться только на публичный API, а не на внутреннюю файловую структуру этого слайса/сегмента.
Подробнее о причинах требования публичных API и лучших практиках их создания читайте в справочнике о публичных API.