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

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

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

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

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

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

Лечение

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

Выигрыш

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

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

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

Устали читать?

Сбегайте за подушкой, у нас тут контента на 7 часов чтения.

Или попробуйте наш интерактивный курс. Он гораздо более интересный, чем банальный текст.

Узнать больше...