Если класс имеет 5 уровней иерархии, есть ли способ или инструмент для объединения всего кода из иерархии в один класс (используя только определение метода из самого глубокого уровня)?
При выполнении контроля версий API у нас есть единая кодовая база, и мы используем наследование, чтобы изменить логику (только при необходимости) в разных версиях, а также повторно использовать код из более старых версий.
После 20 версий вы получите иерархию с 20 слоями. Старые 10 версий устарели (невидимы для общественности), но код все еще там для повторного использования более новыми версиями.
Теперь мы хотим взять эти 10 самых старых версий и объединить их в одну (последнюю из устаревших версий). Таким образом, у нас будет меньше хаоса в кодовой базе. Один из способов сделать это — пройти 10 версий и объединить методы в один класс, но есть ли способ сделать это программно?
Спасибо
Это может быть достигнуто путем применения Метод Push Down итеративно:
Поведение суперкласса относится только к некоторым его подклассам.
Переместите его в эти подклассы.
Не рекламировать ничего, кроме такого рода рефакторинга, можно с помощью IDE. Например, PhpStorm может помочь вам с этим толкать членов вниз функциональность.
Других решений пока нет …