Você provavelmente sabe disso, mas eu simplesmente faria o seguinte:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
Essa abordagem é simples, não usa truques inteligentes e dá conta do recado!
O problema, porém, é que algumas pessoas não gostam de prefixar seus campos privados com um sublinhado e, portanto, não podem realmente usar essa abordagem, mas, felizmente, para aqueles que usam, é realmente simples. :)
Os prefixos get e set não adicionam clareza à sua API, mas os tornam mais detalhados e a razão pela qual eu não acho que eles adicionam informações úteis é porque quando alguém precisa usar uma API se a API faz sentido, ela provavelmente vai perceber o que é faz sem os prefixos.
Mais uma coisa, é fácil entender que essas são propriedades porque name
não é um verbo.
Na pior das hipóteses, se as APIs forem consistentes e a pessoa não perceber que name()
é um acessador ename(value)
um modificador, ela só terá que procurar uma vez na documentação para entender o padrão.
Por mais que eu ame C #, acho que C ++ não precisa de propriedades!