2026-02-23 19:52:05 +03:00

3.3 KiB
Raw Blame History

#рефакторинг #запахи_кода

!Pasted image 20241113230738.png

Такие классы содержат поля, методы для получения и установки значений этих полей и ничего больше. Это молчаливые хранилища данных, которыми другие классы наверняка манипулируют излишне детально. Классы данных часто являются признаком размещения поведения в неправильном месте; это означает, что вы можете добиться большего прогресса, переместив его из клиента в сам класс данных. Но есть исключения, и одно из них — запись, которая используется как результат отдельного вызова функции. Ключевой характеристикой такой записи результатов является то, что она неизменяема (по крайней мере на практике). Неизменяемые поля не нужно инкапсулировать, а информация, полученная из неизменяемых данных, может быть представлена в виде полей, а не как методы доступа.

Признаки

Классы данных — это классы, которые содержат только поля и простейшие методы для доступа к ним (геттеры и сеттеры). Это просто контейнеры для данных, используемые другими классами. Эти классы не содержат никакой дополнительной функциональности и не могут самостоятельно работать с данными, которыми владеют

Причины появления

Это нормально, когда класс в начале своей жизни содержит всего лишь несколько публичных полей (а может даже и парочку геттеров/сеттеров). Тем не менее, настоящая сила объектов заключается в том, что они могут хранить типы поведения или операции над собственными данными.

!Pasted image 20241113231226.png

Рефакторинги

  • Инкапсуляция записи
  • Удаление метода установки значения
  • Перенос функции
  • Извлечение функции
  • Разделение этапа

Результат

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

Ссылки