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