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

37 lines
2.0 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 20241118084738.png]]
### **Проблема**
Программное обеспечение часто включает передачу данных в программы,
которые вычисляют на их основе различную производную информацию
```typescript
function base(aReading) {...}
function taxableCharge(aReading) {...}
```
### **Решение**
Использовать функцию преобразования данных, которая принимает исходные данные в качестве входных и вычисляет все производные значения, помещая каждое из них в качестве поля в выходные данные
```typescript
function enrichReading(argReading) {
const aReading = _.cloneDeep(argReading);
aReading.baseCharge = base(aReading);
aReading.taxableCharge = taxableCharge(aReading);
return aReading;
}
```
### **Причины рефакторинга**
- Избежание дублирования логики вычислений.
### **Достоинства**
- Данные находятся в постоянном место, где их можно найти и обновить, чтобы избежать дублирования логики
### **Порядок рефакторинга**
1. Создайте функцию преобразования, которая принимает преобразуемую запись и возвращает те же значения, что и исходные
2. Выберите некоторую логику и переместите ее тело в функцию преобразования,
чтобы создать новое поле в записи. Измените код клиента для обращения
к новому полю
### **Ссылки**
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]