Vous le savez probablement, mais je ferais simplement ce qui suit:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
Cette approche est simple, n'utilise aucune astuce intelligente et elle fait le travail!
Le problème est cependant que certaines personnes n'aiment pas préfixer leurs champs privés avec un trait de soulignement et ne peuvent donc pas vraiment utiliser cette approche, mais heureusement pour ceux qui le font, c'est vraiment simple. :)
Les préfixes get and set n'ajoutent pas de clarté à votre API mais les rendent plus verbeux et la raison pour laquelle je ne pense pas qu'ils ajoutent des informations utiles est que lorsque quelqu'un a besoin d'utiliser une API si l'API a du sens, elle réalisera probablement de quoi il s'agit se passe des préfixes.
Encore une chose, il est facile de comprendre que ce sont des propriétés car name
n'est pas un verbe.
Dans le pire des cas, si les API sont cohérentes et que la personne n'a pas réalisé qu'il name()
s'agit d'un accesseur etname(value)
est un mutateur, elle n'aura qu'à la rechercher une fois dans la documentation pour comprendre le modèle.
Autant j'aime C #, je ne pense pas que C ++ ait besoin de propriétés du tout!