@antoshka_basenko

Следует ли использовать геттеры и сеттеры внутри самого класса?

Допустим у меня есть в джаве какой-то класс, в нем есть приватное поле, а также геттер и сеттер для него. Если я хочу к примеру получить значение этого поля в методе этого класса следует ли мне использовать геттер или внутри класса принято обращаться через this.поле.

P. S. Я понимаю что и так и так будет работать, просто хочу понять как принято делать

P. S. S. Правильнее будет реализация метода 1 или метода 2? Вот пример кода:

class someClass {
    private int someField;
    public int getSomeField() { return this.someField; }
    public void setSomeField(int someField) { this.someField = someField; }

    public void method1() {
        int f = this.getSomeField();
        /*остальное тело метода*/
    }

    public void method2() {
        int f = this.someField;
        /*остальное тело метода*/
    }
}
  • Вопрос задан
  • 656 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Правильнее конечно же через геттеры-сеттреры, так как изначально предполагалось, что есть только одна точка контроля - геттер/сеттер.
С другой стороны - все на усмотрение разработчика, можно и напрямую к полю.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BorLaze
@BorLaze
Java developer
Нет, нет и еще раз нет.

Ну, представьте класс, работающий со временем. Геттер возвращает строку типа "01:23:45", сеттер оперирует с тем же юзер-френдли форматом. А внутри вы храните время в миллисекундах. Что, всякий раз конвертировать будете?

Геттеры/сеттеры - это интерфейс для работы с объектами класса СНАРУЖИ. Что под капотом - это дело реализации, и операции ВНУТРИ класса должны идти с теми данными и в той форме, что определена архитектурой. А не тем, какая форма нужна потребителю класса.

Ну, самый простой житейский пример - есть двигатель, и есть какой-то регулятор оборотов при нем. Этот регулятор должен обращаться напрямую к карбюратору или должен специальным рычагом давить на педаль газа?
Ответ написан
Комментировать
@AndromedaStar
.Net - monkey
Правильный будет второй вариант, так как геттеры и сеттеры это интерфейс вашего класса для взаимодействия с внешним миром. А внутри методы должны работать с внутренним состоянием класса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы