ООП головного мозга? Как вы считаете, нормально ли то, когда класс открывает свои поля в публичный доступ? Ведь иногда гетеры и сетеры просто лишние куски кода. Например, вот такой класс (для примера пусть он представляет переменную в коде какого нибудь интерпретатора):class Variable { private: std::string Name; public: std::string Value; std::string GetName() const { return Name; } Variable ( const std::string &name ): Name( name ) { }; } Далее по ходу выполнения кода, мы изменяем поле Value. Разумно ли вместо изменить его вот таким образом ?class Variable { private: std::string Name; std::string Value; public:
std::string GetName() const { return Name; } std::string GetValue() const { return Value; } void SetValue ( const std::string &value ) { Value = value; } Variable ( const std::string &name ): Name( name ) { }; } Так же изменяем поле Value, но теперь через сеттер. Какой вариант лучше? Если что, я использую и использовал всегда первый, но вот пару раз встречал на хабре мнение, что класс вообще не должен давать публичный доступ к полям.
В общем случае, считается хорошей практикой делать поля приватными и обеспечивать к ним доступ через методы (геттеры и сеттеры). Это позволяет контролировать доступ к данным и обеспечивать более гибкую структуру класса.
В вашем примере, второй вариант с использованием геттера и сеттера для поля Value является более правильным и безопасным. Это позволяет добавить дополнительную логику при установке или получении значения поля, в случае необходимости.
Однако, если класс Variable просто хранит данные без какой-либо дополнительной логики или проверок, то можно использовать первый вариант с публичным доступом к полю Value. Но в целом, рекомендуется придерживаться более безопасного подхода и использовать геттеры и сеттеры для работы с данными в классе.
В общем случае, считается хорошей практикой делать поля приватными и обеспечивать к ним доступ через методы (геттеры и сеттеры). Это позволяет контролировать доступ к данным и обеспечивать более гибкую структуру класса.
В вашем примере, второй вариант с использованием геттера и сеттера для поля Value является более правильным и безопасным. Это позволяет добавить дополнительную логику при установке или получении значения поля, в случае необходимости.
Однако, если класс Variable просто хранит данные без какой-либо дополнительной логики или проверок, то можно использовать первый вариант с публичным доступом к полю Value. Но в целом, рекомендуется придерживаться более безопасного подхода и использовать геттеры и сеттеры для работы с данными в классе.