#рефакторинг #методы_рефакторинга ![[Pasted image 20250128082839.png]] **Проблема** Класс почти ничего не делает, ни за что не отвечает, и никакой ответственности для этого класса не планируется ```javascript class Person { get officeAreaCode() {return this.—telephoneNumber.areaCode;} get officeNumber() {return this.—telephoneNumber.number;} } class TelephoneNumber { get areaCode() (return this._areaCode;} get number() (return this._number;} } ``` ### **Решение** Переместите все фичи из описанного класса в другой. ```javascript class Person { get officeAreaCode() {return this._officeAreaCode;} get officeNumber() {return this._officeNumber;} } ``` ### **Причины рефакторинга** Часто этот рефакторинг оказывается следствием недавнего «переселения» части фич класса в другие, после чего от исходного класса мало что осталось. ### **Достоинства** - Меньше бесполезных классов — больше свободной оперативной памяти, в том числе, и у вас в голове ### **Порядок рефакторинга** 1. Создайте в классе-приёмнике публичные поля и методы, которые есть в классе-доноре. Методы должны обращаться к аналогичным методам класса-донора. 2. Замените все обращения к классу-донору обращениями к полям и методам класса-приёмника. 3. Удалите исходный класс. ### **Обратный рефакторинг** - [[Извлечение класса (Extract Class)]] ### **Ссылки** - https://refactoring.guru/ru/inline-class - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]