Выбор ответа Senior SOLID и принципы обновлено

Закон Деметры в компоненте

Вопрос

Какой код нарушает закон Деметры («говори только с ближайшими друзьями»)?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: <City value={order.customer.address.city} /. Цепочка order.customer.address.city означает, что список заказов знает внутреннюю структуру заказа, клиента и адреса.

Варианты ответа

  1. <City value={order.customer.address.city} />правильный ответ
  2. const { city, street } = props в компоненте
  3. items.map(i => i.id) по своим данным
  4. useOrder(orderId) внутри компонента заказа

Разбор

Цепочка order.customer.address.city означает, что список заказов знает внутреннюю структуру заказа, клиента и адреса. Поменяется структура адреса, и правки расползутся по компонентам. Лучше дать заказу селектор или поле deliveryCity. Деструктуризация своих пропсов и map по своим данным это работа с ближайшими объектами. Хук данных нормальная абстракция.

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

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