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