Это в основном личный вкус - я уверен, что вы найдете людей, спорящих с обеих сторон, и я бы сказал, что это не черный или белый, а зависит от того, насколько "большой" класс.
Объяснение использования геттеров и сеттеров таково, что вы абстрагируете фактическое представление в виде поля, чтобы дать вам свободу начать представлять его как, например, производное значение без изменения вашего интерфейса.Так что на самом деле все сводится к тому, насколько ценный интерфейс для этого класса для вас.
Если это часть вашего первоклассного публичного интерфейса, то обязательно используйте геттеры и сеттеры.С другой стороны, если это простой держатель данных, такой как кортеж, который используется исключительно внутри одного класса (например, для отображения строк базы данных перед преобразованием в другой класс), то я без колебаний использую поля;Интерфейс не имеет реальной ценности, поскольку он используется только внутри.
Так сколько классов / пакетов будет использовать этот класс?Если это закрытый, "локальный" класс, то я не думаю, что есть что-то не так с использованием только полей и обновлением ваших вызывающих, если это когда-либо понадобится изменить.
Доступ к полям гораздо легче оправдать, если онивы тоже final
, что часто имеет место с такого рода объектами.