#рефакторинг #запахи_кода ![[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]]