Probablemente lo sepas, pero yo simplemente haría lo siguiente:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
¡Este enfoque es simple, no utiliza trucos ingeniosos y hace el trabajo!
Sin embargo, el problema es que a algunas personas no les gusta prefijar sus campos privados con un guión bajo y, por lo tanto, realmente no pueden usar este enfoque, pero afortunadamente para quienes lo hacen, es realmente sencillo. :)
Los prefijos get y set no agregan claridad a su API, pero los hacen más detallados y la razón por la que no creo que agreguen información útil es porque cuando alguien necesita usar una API si la API tiene sentido, probablemente se dará cuenta de qué prescinde de los prefijos.
Una cosa más, es fácil comprender que se trata de propiedades porque name
no es un verbo.
En el peor de los casos, si las API son coherentes y la persona no se dio cuenta de que name()
es un acceso yname(value)
es un mutador, solo tendrá que buscarlo una vez en la documentación para comprender el patrón.
Por mucho que me guste C #, ¡no creo que C ++ necesite propiedades en absoluto!