Как вы считаете, нормально ли то, когда класс открывает свои поля в публичный доступ?
Ведь иногда гетеры и сетеры просто лишние куски кода.
Например, вот такой класс (для примера пусть он представляет переменную в коде какого нибудь интерпретатора):
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, но теперь через сеттер.
Какой вариант лучше? Если что, я использую и использовал всегда первый, но вот пару раз встречал на хабре мнение, что класс вообще не должен давать публичный доступ к полям.