Также известен как Message Chains

Запах кода Цепочка вызовов

Симптомы и признаки

Вы видите в коде цепочки вызовов вроде такой $a->b()->c()->d()

Причины появления

Цепочка вызовов появляется тогда, когда клиент запрашивает у одного объекта другой, в свою очередь этот объект запрашивает ещё один и т. д. Такие последовательности вызовов означают, что клиент связан с навигацией по структуре классов. Любые изменения промежуточных связей означают необходимость модификации клиента.

Лечение

  • Иногда лучше рассмотреть, для чего используется конечный объект. Может быть, имеет смысл использовать извлечение метода, чтобы извлечь эту функциональность, и передвинуть её в самое начало цепи с помощью перемещения метода.

Выигрыш

  • Может уменьшить связность между классами цепочки.
  • Может уменьшить размер кода.

Не стоит трогать, если...

  • Если вы перестараетесь в процессе сокрытия делегирования, в коде будет довольно сложно понять, где именно осуществляется конкретная работа. Другими словами, появится запах Посредник.

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш интерактивный курс. Он гораздо более интересный, чем банальный текст.

Узнать больше...