ConstructiCat Logo
CodeBust.
Browse section ▾

Организация данных.

Refactoring Mascot
Замена двунаправленной связи однонаправленной

Проблема: У вас есть двухсторонняя связь между классами, но один из классов больше не использует фичи другого. Решение: Уберите неиспользуемую связь.

001
Refactoring Mascot
Замена ссылки значением

Проблема: У вас есть объект-ссылка, который слишком маленький и неизменяемый, чтобы оправдать сложности по управлению его жизненным циклом. Решение: Превратите его в объект-значение.

002
Architectural Patterns Mascot
Замена однонаправленной связи двунаправленной

Проблема: У вас есть два класса, которым нужно использовать фичи друг друга, но между ними существует только односторонняя связь. Решение: Добавьте недостающую связь в класс, в котором она отсутствует.

003
Architectural Patterns Mascot
Замена значения ссылкой

Проблема: Есть много одинаковых экземпляров одного класса, которые можно заменить одним объектом. Решение: Превратите одинаковые объекты в один объект-ссылку.

004
Code Smells Mascot
Дублирование видимых данных

Проблема: Данные предметной области программы хранятся в классах, отвечающих за пользовательский интерфейс (GUI). Решение: Имеет смысл выделить данные предметной области в отдельные классы и, таким образом, обеспечить связь и синхронизацию между классом предметной области и GUI.

005
Refactoring Mascot
Инкапсуляция коллекции

Проблема: Класс содержит поле-коллекцию и простой геттер и сеттер для работы с этой коллекцией. Решение: Сделайте возвращаемое геттером значение доступным только для чтения и создайте методы добавления/удаления элементов этой коллекции.

006
Refactoring Mascot
Инкапсуляция поля

Проблема: У вас есть публичное поле. Решение: Сделайте поле приватным и создайте для него методы доступа.

007
Design Patterns Mascot
Замена поля-массива объектом

Проблема: У вас есть массив, в котором хранятся разнотипные данные. Решение: Замените массив объектом, который будет иметь отдельные поля для каждого элемента.

008
Antipatterns Mascot
Замена простого поля объектом

Проблема: В классе (или группе классов) есть поле простого типа. У этого поля есть своё поведение и связанные данные. Решение: Создайте новый класс, поместите в него старое поле и его поведения, храните объект этого класса в исходном классе.

009
Antipatterns Mascot
Замена магического числа символьной константой

Проблема: В коде используется число, которое несёт какой-то определённый смысл. Решение: Замените это число константой с человеко-читаемым названием, объясняющим смысл этого числа.

010
Architectural Patterns Mascot
Замена подкласса полями

Проблема: У вас есть подклассы, которые отличаются только методами, возвращающими данные-константы. Решение: Замените методы полями в родительском классе и удалите подклассы.

011
Architectural Patterns Mascot
Замена кодирования типа классом

Проблема: В классе есть поле, содержащее кодирование типа. Значения этого типа не используются в условных операторах и не влияют на поведение программы. Решение: Создайте новый класс и применяйте его объекты вместо значений закодированного типа.

012
Antipatterns Mascot
Замена кодирования типа состоянием/стратегией

Проблема: У вас есть закодированный тип, который влияет на поведение, но вы не можете использовать подклассы, чтобы избавиться от него. Решение: Замените кодирование типа объектом-состоянием. При необходимости заменить значение поля с кодированием типа, в него подставляется другой объект-состояние.

013
Code Smells Mascot
Замена кодирования типа подклассами

Проблема: У вас есть закодированный тип, который непосредственно влияет на поведение программы (основываясь на значениях этого поля, в условных операторах выполняется различный код). Решение: Для каждого значения закодированного типа, создайте подклассы. А затем, вынесите соответствующие поведения из исходного класса в эти подклассы. Управляющий код замените полиморфизмом.

014
Architectural Patterns Mascot
Самоинкапсуляция поля

Проблема: Вы используете прямой доступ к приватным полями внутри класса. Решение: Создайте геттер и сеттер для поля, и пользуйтесь для доступа к полю только ими.

015