Перевод легаси на FSD
Вопрос
Как бы ты перевёл существующий проект со структурой «components/, hooks/, utils/» на FSD, не останавливая разработку?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Постепенно: новые фичи сразу по FSD, старый код переносить при касании
Начать с shared и entities, потом features и widgets
Ввести алиасы и публичные API, запретить новые глубокие импорты линтером
Сначала линтер в режиме предупреждений, потом ошибки
Договориться о правилах в ADR и примерах, провести ревью первых слайсов
Не делать большой PR на весь проект
Что могут спросить следом
- Как измеришь прогресс миграции?
- Что делать с циклическими зависимостями?
Разбор
Большой переезд одним PR не делаю: он ломает работу всей команде и тяжело ревьюится. Сначала договариваемся о правилах, фиксируем в ADR и делаем пару эталонных слайсов. Затем снизу вверх: выделяю shared (UI-кит, api-клиент), потом сущности, потом фичи и виджеты. Новый код сразу пишется по FSD, старый переносится, когда его всё равно трогают. Линтер Steiger или eslint-plugin-boundaries включаю сначала предупреждениями, чтобы видеть масштаб, и запрещаю новые нарушения. Прогресс видно по числу оставшихся предупреждений. Циклы между старыми модулями разрываю выносом общего вниз.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.