Ваши объекты - это набор общедоступных атрибутов без поведения.

Протокол пустой (с сеттерами / геттерами).

Если мы попросим специалиста по предметной области описать объект, он вряд ли скажет, что это «набор атрибутов».

Проблемы

  • Нет инкапсуляции.
  • Никакого сопоставления с объектами реального мира.
  • Повторяющийся код
  • "Связь"

Решения

1) Найдите обязанности.

2) Защитите свои атрибуты.

3) Скрыть реализации.

4) Делегат

Примеры

  • DTO

Образец кода

Неправильный

Правильно

Обнаружение

Обнаружение можно автоматизировать с помощью сложных линтеров, игнорирующих сеттеры и геттеры и подсчитывающих методы реального поведения.

Также известен как

  • Класс данных

Теги

  • Анемичный
  • ООП как данные
  • Инкапсуляция
  • Сеттеры / Геттеры
  • Изменчивость

Больше информации

Эта статья является частью серии CodeSmell.