Вы, наверное, это знаете, но я бы просто сделал следующее:
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 ++ вообще нуждается в свойствах!