Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Инкапсуляция записи (Encapsulate Record).md
2026-02-23 19:52:05 +03:00

2.4 KiB
Raw Blame History

#рефакторинг #методы_рефакторинга

!Pasted image 20241119080144.png

Проблема

У вас есть публичное поле

class Person {
  name: string;
}

Решение

Сделайте поле приватным и создайте для него методы доступа

class Person {
  private _name: string;

  get name() {
    return this._name;
  }
  setName(arg: string): void {
    this._name = arg;
  }
}

Причины рефакторинга

Одним из столпов объектного программирования является Инкапсуляция или возможность сокрытия данных объекта. Иначе все данные объектов были бы публичными, и другие объекты могли бы получать и модифицировать данные вашего объекта без его ведома. При этом отделяются данные от поведений, связанных с этими данными, ухудшается модульность частей программы и усложняется её поддержка

Достоинства

  • Если данные и поведения какого-то компонента тесно связанны между собой и находятся в одном месте в коде, вам гораздо проще поддерживать и развивать этот компонент
  • Кроме того, вы можете производить какие-то сложные операции, связанные с доступом к полям объекта

Порядок рефакторинга

  1. Создайте геттер и сеттер для поля
  2. Найдите все обращения к полю. Замените получение значения из поля геттером, а установку новых значений в поле — сеттером
  3. После того как все обращения к полям заменены, сделайте поле приватным

Борется с запахом

Ссылки