Насколько строго нужно следовать DRY и SOLID
Что проверяют
Инженерную зрелость, а не знание расшифровок. Джун считает принципы законами и плодит абстракции, инженер понимает, что у каждого правила есть цена. От кандидата на фронтенд ждут примера, где следование принципу сделало код хуже, и внятного критерия, когда объединять, а когда оставить копию.
Как отвечать
Сформулируйте DRY точно: он про дублирование знания, а не про совпадение символов. Две формы валидации выглядят одинаково, но правила у них меняются независимо, и общий компонент здесь не выигрыш, а будущий рассадник флагов. Рабочее правило простое: пока копий две и они расходятся, копии дешевле. Объединять стоит, когда одну и ту же правку приходится вносить в трёх местах и забыть одно из них реально.
SOLID на фронтенде переносится через компоненты, а не через классы:
- одна ответственность: загрузка данных в хуке, отображение в компоненте, чтобы компонент можно было показать в изоляции;
- открытость к расширению: новые случаи через
children, слоты и композицию, а не через ещё один булев проп внутри; - разделение интерфейсов: компонент принимает нужные поля, а не весь объект целиком, это заодно упрощает мемоизацию;
- инверсия зависимостей: компонент не знает про
fetchи клиент напрямую, данные приходят через хук, который подменяется в тестах.
Заканчивайте критерием: принцип нужен ровно настолько, насколько снижает стоимость следующего изменения. Если абстракция добавила слой, но менять всё равно придётся оба места, она бесполезна.
Где спотыкаются
Обобщают по внешнему сходству разметки. Так рождается универсальная кнопка с полутора десятками пропсов, где каждый новый случай добавляет ветку, а удалить старую боятся.
Второе: рассказывают теорию без единого примера из своего кода. Расшифровку аббревиатуры интервьюер знает и сам, ему нужен случай, когда вы осознанно нарушили принцип, и объяснение почему.
Третье: уходят в обратную крайность и объявляют принципы бюрократией. Через пару вопросов выясняется, что общая логика размазана копиями по экранам, правку расчёта внесли в трёх местах из пяти, и два экрана считают по-старому.