Аспектно-ориентированное программирование позволяет вам перехватывать назначения или выборки и присоединять к ним перехватывающую логику, что, как я полагаю, является правильным способом решения проблемы. (Вопрос о том, должны ли они быть публичными, защищенными или защищенными пакетами, является ортогональным.)
Таким образом, вы начинаете с неперехваченных полей с правильным квалификатором доступа. Когда требования к вашей программе растут, вы присоединяете логику для проверки, делаете копию возвращаемого объекта и т. Д.
Философия получения / установки устанавливает затраты на большое количество простых случаев, когда они не нужны.
Является ли аспектный стиль чище или нет, это несколько качественно. Мне было бы легко видеть только переменные в классе и просматривать логику отдельно. На самом деле, смыслом для Apect-ориентированного программирования является то, что многие проблемы являются сквозными, и разделение их на части в самом теле класса не является идеальным (регистрация в качестве примера - если вы хотите регистрировать все, получает от Java, то хочет, чтобы вы написать целую кучу геттеров и синхронизировать их, но AspectJ позволяет вам использовать одну строку).
Проблема IDE - красная сельдь. Это не столько печатание, сколько чтение и визуальное загрязнение, возникающее при получении / наборе.
На первый взгляд аннотации похожи на аспектно-ориентированное программирование, однако они требуют от вас исчерпывающего перечисления pointcut, добавляя аннотации, в отличие от краткой спецификации подстановочных знаков в AspectJ.
Надеюсь, осведомленность об AspectJ не позволяет людям преждевременно освоиться на динамических языках.