Лекция
Привет, Вы узнаете о том , что такое приёмы рефакторинга, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое приёмы рефакторинга, решение задач обобщения, рефакторинг , настоятельно рекомендую прочитать все из категории Теория рефакторинга.
Обобщение порождает собственную группу рефакторинг ов, в основном связанных с перемещением функциональности по иерархии наследования классов, создания новых классов и интерфейсов, а также замены наследования делегированием и наоборот.
Подъем поля
Проблема: Два класса имеют одно и то же поле.
Решение: Переместите поле в суперкласс, убрав его из подклассов.
Подъем метода
Проблема: Подклассы имеют методы, которые делают схожую работу.
Решение: В этом случае нужно сделать методы идентичными, а затем переместить их в суперкласс.
Подъем тела конструктора
Проблема: Подклассы имеют конструкторы с преимущественно одинаковым кодом.
Решение: Создайте конструктор в суперклассе и вынесите в него общий для подклассов код. Вызывайте конструктор суперкласса в конструкторах подкласса.
Спуск метода
Проблема: Поведение, реализованное в суперклассе, используется только одним или несколькими подклассами.
Решение: Переместите это поведение в подклассы.
Спуск поля
Проблема: Поле используется только в некоторых подклассах.
Решение: Переместите поле в эти подклассы.
Извлечение подкласса
Проблема: Класс имеет фичи, которые используются только в определенных случаях.
Решение: Создайте подкласс и используйте его в этих случаях.
Извлечение суперкласса
Проблема: У вас есть два класса с общими полями и методами.
Решение: Создайте для них общий суперкласс и перенесите туда одинаковые поля и методы.
Извлечение интерфейса
Проблема: Несколько клиентов пользуются одной и той же частью интерфейса класса. Об этом говорит сайт https://intellect.icu . Либо в двух классах часть интерфейса оказалась общей.
Решение: Выделите эту общую часть в свой собственный интерфейс.
Свертывание иерархии
Проблема: У вас есть некая иерархия классов, в которой подкласс мало чем отличается от суперкласса.
Решение: Слейте подкласс и суперкласс воедино.
Создание шаблонного метода
Проблема: В подклассах реализованы алгоритмы, содержащие похожие шаги и одинаковый порядок выполнения этих шагов.
Решение: Вынесите структуру алгоритма и одинаковые шаги в суперкласс, а в подклассах оставьте реализацию отличающихся шагов.
Замена наследования делегированием
Проблема: У вас есть подкласс, который использует только часть методов суперкласса или не хочет наследовать его данные.
Решение: Создайте поле и поместите в него объект суперкласса, делегируйте выполнение методов объекту-суперклассу, уберите наследование.
Замена делегирования наследованием
Проблема: Класс содержит множество простых делегирующих методов ко всем методам другого класса.
Решение: Сделайте класс наследником делегата, после чего делегирующие методы потеряют смысл.
Анализ данных, представленных в статье про приёмы рефакторинга, подтверждает эффективность применения современных технологий для обеспечения инновационного развития и улучшения качества жизни в различных сферах. Надеюсь, что теперь ты понял что такое приёмы рефакторинга, решение задач обобщения, рефакторинг и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Теория рефакторинга
Из статьи мы узнали кратко, но содержательно про приёмы рефакторинга
Комментарии