Класс данных
Симптомы и признаки
Классы данных — это классы, которые содержат только поля и простейшие методы для доступа к ним (геттеры и сеттеры). Это просто контейнеры для данных, используемые другими классами. Эти классы не содержат никакой дополнительной функциональности и не могут самостоятельно работать с данными, которыми владеют.
Причины появления
Это нормально, когда класс в начале своей жизни содержит всего лишь несколько публичных полей (а может даже и парочку геттеров/сеттеров). Тем не менее, настоящая сила объектов заключается в том, что они могут хранить типы поведения или операции над собственными данными.
Лечение
-
Если класс содержит публичные поля, примените инкапсуляцию поля чтобы скрыть их из прямого доступа, разрешив доступ только через геттеры и сеттеры.
-
Примените инкапсуляцию коллекции для данных, которые хранятся в коллекциях (вроде массивов).
-
Осмотрите клиентский код, который использует этот класс. Возможно, там вы найдёте функциональность, которая смотрелась бы уместнее в самом классе данных. В этом случае используйте перемещение метода и извлечение метода для переноса функциональности в класс данных.
-
После того как класс наполнился осмысленными методами, возможно, стоит подумать об уничтожении старых методов доступа к данным, которые дают слишком открытый доступ к данным класса. В этом вам поможет удаление сеттера и сокрытие метода.
Выигрыш
-
Улучшает понимание и организацию кода. Операции над определёнными данными теперь собраны в одном месте, их не надо искать по всему коду.
-
Может вскрыть факты дублирования клиентского кода.