Структура проекта
Цель
Основная цель структуры проекта - минимизация когнитивной нагрузки и предсказуемость кодовой базы.
Структура проекта MUST:
- Помогать быстро ориентироваться в коде без глобального контекста
- Обеспечивать контролируемый рост проекта
- Минимизировать неявные связи
- Поддерживать low coupling и high cohesion
Нарушение правил считается архитектурной ошибкой.
Выбор подхода
| Тип проекта | Подход | Характеристики |
|---|---|---|
| Простые (MVP, Landing) | Feature-based | Плоская структура, минимум абстракций |
| Сложные (Продукты) | Feature-Sliced Design | Строгие слои, контролируемые зависимости |
Сигналы перехода на Feature-Sliced Design
SHOULD: Мигрировать на Feature-Sliced Design при появлении:
- Повторно используемые бизнес-сущности
- Рост числа фич, работающих с одними данными
- Доменные инварианты и правила
- Рост команды или параллельная разработка
Разделы документации
- Слои и архитектура - Где разместить код, слои FSD, структура слоев
- Сегменты - Организация кода внутри слайсов
- Коммуникация - Сквозные задачи, коммуникация между фичами, Public API
- Примеры - Практические примеры решений
- Правила именования - Конвенции именования файлов и переменных
- Антипаттерны - Распространенные ошибки
- Контроль качества - Временные упрощения, автоматизация проверок