Установщики IMO - это запах кода, который обычно указывает на одну из двух вещей:
Изготовление горца из крота
Если у вас есть такой класс:
class Gizmo
{
public:
void setA(int a) { a_ = a; }
int getA() const { return a_; }
void setB(const std::string & b) { v_ = b; }
std::string getB() const { return b_; }
private:
std::string b_;
int a_;
};
... и значения действительно так просты, тогда почему бы просто не сделать общедоступными элементы данных?:
class Gizmo
{
public:
std::string b_;
int a_;
};
... Гораздо проще и, если данные настолько просты , вы ничего не потеряете.
Другая возможность, что вы могли бы быть
Изготовление крота из горы
Во многих случаях данные не так просты: возможно, вам нужно изменить несколько значений, выполнить некоторые вычисления, уведомить какой-либо другой объект; кто что знает Но если данные достаточно нетривиальны, так что вам действительно нужны сеттеры и геттеры, то нетривиально достаточно и обработки ошибок. Поэтому в этих случаях ваши геттеры и сеттеры должны возвращать какой-то код ошибки или делать что-то еще, чтобы указать, что случилось что-то плохое.
Если вы объединяете вызовы вместе, как это:
A.doA().doB().doC();
... и doA () не работает, вы действительно хотите вызывать doB () и doC ()? Я сомневаюсь в этом.