Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Встраивание класса (Inline Class).md
2026-02-23 19:52:05 +03:00

47 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#рефакторинг #методы_рефакторинга
![[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]]