34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
#рефакторинг #методы_рефакторинга
|
||
|
||
![[Pasted image 20250213084339.png]]
|
||
|
||
### **Проблема**
|
||
Значение поля должно быть установлено только в момент создания и больше никогда не меняться
|
||
```typescript
|
||
class Person {
|
||
get name() {...}
|
||
set name(aString) {...}
|
||
}
|
||
```
|
||
|
||
### **Решение**
|
||
Удалите методы, устанавливающие значение этого поля
|
||
```typescript
|
||
class Person {
|
||
get name() {...}
|
||
}
|
||
```
|
||
|
||
### **Причины рефакторинга**
|
||
Вы хотите сделать значение поля неизменяемым.
|
||
|
||
### **Порядок рефакторинга**
|
||
1. Значение поля должно меняться только в конструкторе. Если конструктор не содержит параметра для установки значения, нужно его добавить
|
||
2. Найдите все вызовы сеттера
|
||
1. Если вызов сеттера стоит сразу после вызова конструктора текущего класса, переместите его аргумент в вызов конструктора и удалите сеттер.
|
||
2. Вызовы сеттера в конструкторе замените на прямой доступ к полю.
|
||
3. Удалите сеттер
|
||
|
||
### **Ссылки**
|
||
- https://refactoring.guru/ru/remove-setting-method
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |