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