29 lines
2.4 KiB
Markdown
29 lines
2.4 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
![[Pasted image 20241112230602.png]]
|
||
|
||
> Иногда выясняется, что в некотором классе поле устанавливается только в определенных обстоятельствах. Такой код труден для понимания, поскольку вы ожидаете, что объекту нужны все его поля. Можно сломать голову, пытаясь понять, для чего нужна некоторая переменная, если найти, где она используется, никак не удается.
|
||
|
||
### **Признаки**
|
||
Временные поля — это поля, которые нужны объекту только при определённых обстоятельствах. Только тогда они заполняются какими-то значениями, оставаясь пустыми в остальное время
|
||
|
||
### **Причины появления**
|
||
Зачастую временные поля создаются для использования в алгоритме, который требует большого числа входных данных. Так, вместо создания большого числа параметров в таком методе, программист решает создать для этих данных поля в классе. Эти поля используются только в данном алгоритме, а в остальное время простаивают.
|
||
|
||
Такой код очень трудно понять. Вы ожидаете увидеть данные в полях объекта, а они почему-то пустуют почти все время.
|
||
|
||
![[Pasted image 20241112230612.png]]
|
||
|
||
### **Рефакторинги**
|
||
- [[Извлечение класса (Extract Class)]]
|
||
- [[Перенос функции (Move Function)]]
|
||
- [[Введение частного случая (Introduce Special Case)]]
|
||
|
||
![[Pasted image 20241112230618.png]]
|
||
|
||
### **Результат**
|
||
- Улучшает понятность и организацию кода
|
||
|
||
### **Ссылки**
|
||
- [https://refactoring.guru/ru/smells/temporary-field](https://refactoring.guru/ru/smells/temporary-field)
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |