Должны ли экземпляры использовать сеттеры / геттеры для доступа к своим частным элементам данных?

Начиная с каждого вводного урока программирования, нас учат использовать методы доступа и сеттеры, а не раскрывать внутреннюю работу класса. Студенты изучают смысл упражнения на более поздний день, но теперь я понимаю, что такая практика (A) не позволяет реализации стать частью экспортируемого по контракту API, (B) улучшает инкапсуляцию и сокрытие данных, а (C) позволяет гарантировать, что определенные операции должны происходить (увеличивать счетчик, регистрировать что-либо и т. д.) всякий раз, когда переменная установлена ​​или доступна.

Как насчет использования getter / setters из самого экземпляра? Например,

class A {
  private:
    int number = 43;
  public:
    int getNumber();
    void setNumber(int);
};

Когда дело доходит до этого, это действительно имеет значение? Есть ли какие-то руководящие принципы, которым мы можем следовать, или было что-нибудь написано по этому сценарию? Этот вопрос часто возникает у меня в голове, когда я программирую, но я никогда не видел, чтобы кто-нибудь обсуждал методы доступа / мутаторы в отношении самого экземпляра.

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос