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

Спуск поля

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

Проблема

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

Решение

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

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

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

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

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

Достоинства

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

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

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

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

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