Base/Knowledges/IT/Рефакторинг/Запахи кода/Цепочки сообщений.md
2026-02-23 19:52:05 +03:00

2.7 KiB
Raw Blame History

#рефакторинг #запахи_кода

!Pasted image 20241112230900.png

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

Признаки

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

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

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

!Pasted image 20241112230908.png

Рефакторинги

!Pasted image 20241112230914.png

Результат

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

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

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

Ссылки