2026-02-23 19:52:05 +03:00

31 lines
2.1 KiB
Markdown
Raw Permalink 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 20241112225933.png]]
> Иногда это функция, кото­рая должна была вырасти и стать важной и востребованной позже, но которая так и не осуществила свои мечты. Иногда это класс, который раньше был нужен, но оказался уменьшен с помощью рефакторинга. В любом случае, такие элемен­ты программы должны умереть с достоинством
### **Признаки**
- Класс не делает достаточно много, чтобы уделять ему достаточно внимания, он должен быть уничтожен
### **Причины появления**
- Класс был задуман как полнофункциональный, но в результате рефакторинга ужался до неприличных размеров
- Класс создавался в расчёте на некие будущие разработки, до которых руки так и не дошли
### **Рефакторинги**
- [[Встраивание функции (Inline Function)]]
- [[Встраивание класса (Inline Class)]]
- [[Свертывание иерархии (Collapse Hierarchy)]]
![[Pasted image 20241112225940.png]]
### **Результат**
- Уменьшение размера кода
- Упрощение поддержки
### **Не стоит трогать, если...**
- Иногда енивый класс_ бывает создан для того, чтобы явно очертить какие-то намерения. В этом случае, стоит соблюдать баланс понятности кода и его простоты
### **Ссылки**
- [https://refactoring.guru/ru/smells/lazy-class](https://refactoring.guru/ru/smells/lazy-class)
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]