S - единственная ответственность
Вопрос
Что такое принцип единственной ответственности? Дай пример нарушения во фронтенде.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
у модуля одна причина для изменения
речь не про «делает одно действие», а про одного заказчика изменений
нарушение: компонент делает запрос, форматирует и рендерит
починка: хук данных + чистая функция форматирования + компонент представления
признак нарушения: правка вёрстки требует лезть в запрос
перегиб: дробление на файлы по три строки
Что могут спросить следом
- Как отличить нарушение от нормального размера компонента
- Что делать с компонентом на 600 строк в легаси
- Как это связано с правилом «хуки для логики, компоненты для вида»
Разбор
Формулировка Мартина: у модуля должна быть одна причина для изменения - то есть один источник требований. Это не «функция делает одно действие».
Типичное нарушение: <OrdersTable>, который сам вызывает fetch, сам приводит даты
к московскому времени, сам считает итоги и рисует таблицу. Он меняется, когда меняется API,
когда меняется формат даты и когда дизайнер двигает колонку - три разных заказчика.
Починка: useOrders() - данные, formatOrder() - чистая функция, OrdersTable - только
представление. Проверка простая: если правка вёрстки заставляет открывать код запроса,
принцип нарушен.
Перегиб тоже бывает: файлы по три строки и папка из двадцати модулей ради одной таблицы читаются хуже, чем один честный компонент.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.