Interface Segregation в пропсах
Вопрос
Компонент <Avatar user={user} /> использует только user.avatarUrl и user.name, а получает весь объект пользователя из стора (30 полей). Какой принцип это нарушает в первую очередь и какое следствие самое заметное?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- ISP: компонент зависит от лишнего и перерисовывается от чужих полейправильный ответ
- OCP: компонент нельзя расширить без изменения его исходного кода
- DRY: поля пользователя продублированы в пропсах и в сторе
- LSP: объект пользователя нельзя подставить вместо другого объекта
Разбор
ISP говорит не зависеть от того, чем не пользуешься. Если передавать весь user, любое изменение любого поля (например, баланса) создаёт новый объект и перерисует аватар, а в тестах придётся собирать полный объект. Лучше передать src и name. OCP про добавление поведения, DRY про дублирование знания, LSP про подстановку реализаций: к ситуации они не относятся.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.