Есть ли способ увидеть весь код подкласса (из верхней иерархии) в одном представлении - PullRequest
0 голосов
/ 27 апреля 2018

Если класс имеет 5 уровней иерархии, есть ли способ или инструмент для объединения всего кода из иерархии в один класс (используя только определение метода из самого глубокого уровня)?

При создании версий API у нас есть единая кодовая база, и мы используем наследование для изменения логики (только при необходимости) в разных версиях, а также повторного использования кода из более старых версий. После 20 версий вы получите иерархию с 20 слоями. Старые 10 версий устарели (невидимы для общественности), но код все еще там для повторного использования более новыми версиями.

Что мы хотим сделать сейчас, так это взять эти 10 самых старых версий и объединить их в одну (последнюю из устаревших версий). Таким образом у нас будет меньше хаоса в кодовой базе. Один из способов сделать это - пройти 10 версий и объединить методы в один класс, но есть ли способ сделать это программно?

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

Этого можно достичь, применив метод Push Down итеративно:

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

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

Ничего не рекламировать, но этот вид рефакторинга можно выполнить с помощью IDE. Например, PhpStorm может помочь вам с этим, предоставляя push членам функциональность .

...