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