Вы, наверное, знаете это, но я бы просто сделал следующее:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
Этот подход прост, не использует хитрых уловок и выполняет свою работу!
Проблема, однако, в том, что некоторые люди не любят ставить префикс своих личных полей с подчеркиванием, и поэтому они не могут действительно использовать этот подход, но, к счастью для тех, кто делает, это действительно просто. :)
Префиксы get и set не добавляют ясности вашему API, но делают их более многословными, и я не думаю, что они добавляют полезную информацию, потому что, когда кто-то должен использовать API, если API имеет смысл, он, вероятно, будет понять, что он делает без префиксов.
Еще одна вещь, легко понять, что это свойства, потому что name
не глагол.
Сценарий наихудшего случая, если API согласованы, и человек не осознал, что name()
является аксессором, а name(value)
мутатором, тогда ему нужно будет только один раз найти его в документации, чтобы понять шаблон .
Столько, сколько я люблю C #, я не думаю, что C ++ вообще нуждается в свойствах!