Ответ вслух Junior SOLID и принципы обновлено

S - единственная ответственность

Вопрос

Что такое принцип единственной ответственности? Дай пример нарушения во фронтенде.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Формулировка Мартина: у модуля должна быть одна причина для изменения - то есть один источник требований. Это не «функция делает одно действие».

Что должно прозвучать в ответе

  • у модуля одна причина для изменения

  • речь не про «делает одно действие», а про одного заказчика изменений

  • нарушение: компонент делает запрос, форматирует и рендерит

  • починка: хук данных + чистая функция форматирования + компонент представления

  • признак нарушения: правка вёрстки требует лезть в запрос

  • перегиб: дробление на файлы по три строки

Что могут спросить следом

  • Как отличить нарушение от нормального размера компонента
  • Что делать с компонентом на 600 строк в легаси
  • Как это связано с правилом «хуки для логики, компоненты для вида»

Разбор

Формулировка Мартина: у модуля должна быть одна причина для изменения - то есть один источник требований. Это не «функция делает одно действие».

Типичное нарушение: <OrdersTable>, который сам вызывает fetch, сам приводит даты к московскому времени, сам считает итоги и рисует таблицу. Он меняется, когда меняется API, когда меняется формат даты и когда дизайнер двигает колонку - три разных заказчика.

Починка: useOrders() - данные, formatOrder() - чистая функция, OrdersTable - только представление. Проверка простая: если правка вёрстки заставляет открывать код запроса, принцип нарушен.

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.