#рефакторинг #методы_рефакторинга ![[Pasted image 20250128084347.png]] ### **Проблема** Класс имеет слишком много методов, которые просто делегируют работу другим объектам. ```javascript manager = aPerson.manager; class Person { get manager() {return this.department.manager;} } ``` ### **Решение** Удалите эти методы и заставьте клиента вызывать конечные методы напрямую. ```javascript manager = aPerson.department.manager; ``` ### **Причины рефакторинга** Каждый раз, когда клиент хочет использовать новую функциональную возможность делегата, нужно добавить простой метод делегирования на сервер. После ряда добавлений функциональных возможностей такая пересылка начинает раздражать. Серверный класс оказывается просто [[Посредник|посредником]], и, возможно, пришло время клиенту работать с делегатом непосредственно. ### **Порядок рефакторинга** 1. Создайте геттер для доступа к объекту класса-делегата из объекта класса-сервера. 2. Замените вызовы делегирующих методов класса-сервера прямыми вызовами методов класса-делегата. ### **Борется с запахом** - [[Посредник]] ### **Обратный рефакторинг** - [[Сокрытие делегата (Hide Delegate)]] ### **Ссылки** - https://refactoring.guru/ru/remove-middle-man - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]