Ваши объекты - это набор общедоступных атрибутов без поведения.
Протокол пустой (с сеттерами / геттерами).
Если мы попросим специалиста по предметной области описать объект, он вряд ли скажет, что это «набор атрибутов».
Проблемы
- Нет инкапсуляции.
- Никакого сопоставления с объектами реального мира.
- Повторяющийся код
- "Связь"
Решения
1) Найдите обязанности.
2) Защитите свои атрибуты.
3) Скрыть реализации.
4) Делегат
Примеры
- DTO
Образец кода
Неправильный
Правильно
Обнаружение
Обнаружение можно автоматизировать с помощью сложных линтеров, игнорирующих сеттеры и геттеры и подсчитывающих методы реального поведения.
Также известен как
- Класс данных
Теги
- Анемичный
- ООП как данные
- Инкапсуляция
- Сеттеры / Геттеры
- Изменчивость
Больше информации
- Википедия
- Гуру рефакторинга
- Обнаженные модели. Часть I: Сеттеры
- Обнаженные модели - Часть II: геттеры
- Как отделить устаревшую систему
Эта статья является частью серии CodeSmell.