В последнюю неделю на работе занимаюсь созданием механизма угадывания для связки некоторых параметров.
Основа системы — некоторые правила, пользуясь которыми будет работать некоторый механизм. Так вот, возникла такая задача: сделать несколько абстрактных классов, которые будут представлять собой несколько типов правил. А уже конкретные правила будут от них наследоваться. Для начала сделал базовый интерфейс для правила, а потом уже сверху сделал абстрактный класс с некоторым конструктором и парой полей.
Таким образом, реальное правило должно быть наследовано от этого абстрактного класса и дёргать его конструктор в своём.
Проблема возникла такогда, когда полям абстрактного класса были выставлены модификаторы protected. То есть, с одной стороны, цели я преследовал светлые: хотел сделать так, чтобы наследники не мучались проверкой переданных конструктору параметров и имели доступ к полям родительского класса.
Нажимаю Ctrl+S и CheckStyle окрашивает поля в характерный жёлтенький цвет: warnings.
Посмотрел — оказалось, он требует сделать поля private и для нужных сделать геттеры.
Поговорил с ребятами, подумал сам. Да, конечно, protected поля раскрывают секреты устройства абстрактного класса, но, с другой стороны, доступаться до них напрямую гораздо удобнее, чем дёргать геттеры.

Вот такая философия. И так не так и так ни эдак.

Реклама