26 lines
1.6 KiB
Markdown
26 lines
1.6 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
![[Pasted image 20241114073259.png]]
|
||
|
||
### **Признаки**
|
||
- Всякий раз при создании подкласса какого-то класса приходится создавать ещё один подкласс для другого класса
|
||
|
||
### **Причины появления**
|
||
- Пока иерархия была небольшая, всё было хорошо. Но с появлением новых классов вносить изменения становилось всё сложнее и сложнее
|
||
|
||
### **Рефакторинги**
|
||
- [[Перенос поля (Move Field)]]
|
||
- [[Перенос функции (Move Function)]]
|
||
|
||
![[Pasted image 20241114073424.png]]
|
||
|
||
### **Результат**
|
||
- Уменьшает дублирования кода
|
||
- Может улучшить организацию кода
|
||
|
||
|
||
### **Не стоит трогать, если...**
|
||
- Иногда наличие паралельной иерархии — это необходимое зло, без которого устройство программы было бы еще хуже. Если вы обнаружите, что ваши попытки устранить дублирование приводят к еще большему ухудшению организации кода, то... остановите рефакторинг, откатите все внесенные изменения, выпейте чаю и начните привыкать к этому коду
|
||
|
||
### **Ссылки**
|
||
- https://refactoring.guru/ru/smells/parallel-inheritance-hierarchies |