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