Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git! Привет! Глянь мой новый курс по Git на GitByBit.com! Привет! Хочешь круто подтянуть Git? Глянь мой новый курс на GitByBit.com!

Параллельные иерархии наследования

Также известен как: Parallel Inheritance Hierarchies

Симптомы и признаки

Всякий раз при создании подкласса какого-то класса приходится создавать ещё один подкласс для другого класса.

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

Пока иерархия была небольшая, всё было хорошо. Но с появлением новых классов вносить изменения становилось всё сложнее и сложнее.

Лечение

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

Выигрыш

  • Уменьшает дублирования кода.

  • Может улучшить организацию кода.

Не стоит трогать, если...

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