Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Замена примитива объектом (Replace Primitive with Object).md
2026-02-23 19:52:05 +03:00

31 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 20250127092118.png]]
**Проблема**
Часто на ранних стадиях разработки принимается решение о представлении простых фактов в виде простых элементов данных, таких как числа или строки. По мере развития программы простые вещи перестают быть столь простыми —
так, некоторое время телефонный номер может быть представлен в виде строки,
но позже ему потребуется специальное поведение для форматирования, извлечения кода города и тому подобного.
```javascript
orders.filter(о => "high" === о.priority || "rush" === о.priority) ;
```
### **Решение**
```javascript
orders.filter(о => о.priority.higherThan(new Priority('normal")))
```
### **Причины рефакторинга**
### **Достоинства**
- Выполняется самоинкапсуляция поля
### **Порядок рефакторинга**
1. Примените рефакторинг [[Инкапсуляция переменной (Encapsulate Variable)]]
2. Создайте простой класс-значение для данных. Он должен принимать существующее значение в конструкторе и предоставлять для этого значения метод доступа
3. Измените метод установки значения таким образом, чтобы он создавал новый экземпляр класса-значения и сохранял его в поле, изменяя тип поля, если таковое имеется.
4. Измените метод получения значения таким образом, чтобы он возвращал результат вызова метода получения значения нового класса.
### **Ссылки**
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]