SOLID, DRY, KISS, YAGNI на фронтенде

↑ 8.2 Архитектура фронтенда и паттерны · → Следующая

Желательно~3 мин чтенияУровень: senior

Зачем это на собесе

Принципы противоречат друг другу; senior показывает, как выбирать баланс.

Принципы

ПринципФормулировкаПример на фронтенде
DRYне повторять знаниеединый валидатор, общий тип из OpenAPI
KISSпроще — лучшеref и computed вместо собственного стора
YAGNIне делай «на будущее»не строить универсальный конфигуратор форм ради одной формы
SOLIDграницы и зависимостисм. раздел про парадигмы
Separation of Concernsразные ответственности отдельноUI, состояние, доступ к данным
Law of Demeterговори только с ближайшимине тянуть a.b.c.d через компоненты

Конфликты

  • DRY против YAGNI: раннее объединение похожего кода создаёт неверную абстракцию. Правило трёх: обобщаем на третьем повторении.
  • DRY против независимости модулей: дублирование между разными доменами бывает дешевле общей зависимости.
  • KISS против расширяемости: не проектировать для гипотетических требований.

Ключевой вопрос: дублируется знание или просто похожий текст. Если два фрагмента меняются по разным причинам — это не дубль.

Неправильная абстракция

Дороже дубликата: флаги и if в общем компоненте, который «почти подходит всем».

Практика

  • сначала конкретный код, абстракция после появления паттерна;
  • маленькие компоненты с узкими props;
  • явные зависимости, без глобальных сущностей;
  • измеримые критерии: цикломатическая сложность, размер файла, частота совместных изменений.

Вопросы с ответами