Base/Knowledges/IT/Рефакторинг/Запахи кода/Теоретическая общность.md
2026-02-23 19:52:05 +03:00

32 lines
2.8 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 20241112230403.png]]
> Воз­никает, когда говорят о том, что в будущем, наверное, потребуется возможность делать то или иное, и хотят обеспечить набор механизмов для работы с вещами, которые пока что не нужны. Получающуюся в результате программу труднее по­нимать и сопровождать. Если бы все эти механизмы использовались, их наличие было бы оправданным, а без этого они только мешают, так что лучше от них из­бавиться.
### **Признаки**
- Класс, метод, поле или параметр не используются
### **Причины появления**
Иногда код создаётся «про запас», чтобы поддерживать какой-то возможный будущий функционал, который в итоге так и не реализуется. В результате этот код становится труднее понимать и сопровождать.
### **Рефакторинги**
- [[Свертывание иерархии (Collapse Hierarchy)]]
- [[Встраивание функции (Inline Function)]]
- [[Встраивание класса (Inline Class)]]
- [[Удаление неработающего кода (Remove Dead Code)]]
![[Pasted image 20241112230411.png]]
### **Результат**
- Уменьшение размера кода
- Упрощение поддержки
### **Не стоит трогать, если...**
- В случаях, когда вы работаете над фреймворком, создание функциональности, не используемой самим фреймворком, вполне оправдано. Главное, чтобы она была полезна пользователям фреймворка
- Перед удалением элементов, стоит удостовериться, не используются ли они в юнит-тестах. Такое бывает, если в тестах необходим способ получения какой-то служебной информации класса или осуществления каких-то специальных тестовых действий
### **Ссылки**
- [https://refactoring.guru/ru/smells/speculative-generality](https://refactoring.guru/ru/smells/speculative-generality)
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]