Також відомий як Message Chains

Запах коду Ланцюжок викликів

Симптоми і ознаки

Ви бачите в коді ланцюжок викликів на зразок такого $a->b()->c()->d()

Причини появи

Ланцюжок викликів з'являється тоді, коли клієнт запитує один об'єкт щодо іншого, у свою чергу цей об'єкт запитує ще один і т. д. Такі послідовності викликів означають, що клієнт є пов'язаний з навігацією по структурі класів. Будь-які зміни проміжних зв'язків означають, що клієнт потрібно буде модифікувати.

Лікування

  • Іноді краще розглянути, для чого використовується кінцевий об'єкт. Можливо, має сенс використати відокремлення методу, щоб витягнути цю функціональність і перенести її в самий початок ланцюга за допомогою переміщення методу.

Виграш

  • Зменшується зв'язність між класами ланцюжка.
  • Зменшується розмір коду.

Не варто чіпати, якщо...

  • Якщо ви перестараєтеся в процесі приховування делегування, в коді буде досить складно зрозуміти, де саме здійснюється конкретна робота. Іншими словами, з'явиться запах Посередник.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...