Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Объединение функций в класс (Combine Functions into Class).md
2026-02-23 19:52:05 +03:00

45 lines
2.3 KiB
Markdown
Raw Permalink 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 20241118083219.png]]
### **Проблема**
Когда группы функций, которые тесно взаимодействуют с общими данными
(обычно передаваемыми в качестве аргументов в вызовы функций), то есть
возможность сформировать класс
```typescript
function base(aReading) {...}
function taxableCharge(aReading) {...}
function calculateBaseCharge(aReading) {...}
```
### **Решение**
Использование класса создает общую среду, в
которой совместное использование этих функций видно более отчетливо и позволяет упростить вызовы функций внутри объекта путем удаления множества
аргументов. Кроме того, класс предоставляет возможность получения ссылки
для передачи такого объекта в другие части системы
```typescript
class Reading {
base() {...}
taxableCharge() {...}
calculateBaseCharge() {...}
}
```
### **Достоинства**
- Одним из существенных преимуществ применения класса является то, что он позволяет клиентам изменять основные данные объекта при сохранении их согласованности
### **Порядок рефакторинга**
1. Сгруппируйте общие данные для двух функций в структуру
2. Перенесите каждую функцию, которая использует общую запись в новый класс
3. Любые аргументы вызова функции, которые являются членами класса, могут
быть удалены из списка аргументов
### **Борется с запахом**
- [[Длинный список параметров]]
- [[Стрельба дробью]]
### **Ссылки**
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]