Также известен как Push Down Field

Рефакторинг Спуск поля

Проблема

Поле используется только в некоторых подклассах.

Решение

Переместите поле в эти подклассы.

До
Push Down Field - Before
После
Push Down Field - After

Причины рефакторинга

Поле, которое планировали сделать универсальным для всех классов, по факту, используется только в некоторых подклассах. Такая ситуация может возникнуть, когда планируемые фичи так и не были реализованы.

Кроме того, такая ситуация может возникнуть после извлечения (или удаления) части функциональности из иерархии классов.

Достоинства

  • Улучшает связность внутри классов. Поле находится там, где оно реально используется.

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

Порядок рефакторинга

  1. Объявите поле во всех необходимых подклассах.

  2. Удалите поле из суперкласса.

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

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

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

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