Base/Knowledges/IT/Рефакторинг/Запахи кода/Отказ от наследственности.md
2026-02-23 19:52:05 +03:00

2.6 KiB
Raw Permalink Blame History

#рефакторинг #запахи_кода

!Pasted image 20241114071602.png

Подклассам полагается наследовать методы и данные своих родителей. Но что делать, если это наследство им не нравится или не требуется? И получив все эти дары, они пользуются только малой их частью. Обычно это означает неправильно продуманную иерархию. В родительском классе должна содержаться только та функциональность, которая используется. Часто вы можете встретить совет делать все суперклассы абстрактными.

Признаки

  • Если подкласс использует лишь малую часть унаследованных методов и свойств суперкласса, это является признаком неправильной иерархии. При этом ненужные методы могут просто не использоваться либо быть переопределёнными и выбрасывать исключения

Причины появления

  • Кто-то создал наследование между классами только из побуждений повторного использования кода, находящегося в суперклассе. При этом суперкласс и подкласс могут являться совершенно различными сущностями.

!Pasted image 20241114071816.png

Рефакторинги

!Pasted image 20241114071837.png

Результат

  • Улучшает понимание и организацию кода. Теперь вы не будете тратить время на догадки о том, почему класс Стул унаследован от класса Животное (несмотря на то, что оба имеют четыре ноги).

Ссылки