Prawdopodobnie wiesz o tym, ale zrobiłbym po prostu, co następuje:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
To podejście jest proste, nie wykorzystuje sprytnych sztuczek i wykonuje swoją pracę!
Problem polega jednak na tym, że niektórzy ludzie nie lubią poprzedzać swoich prywatnych pól podkreśleniem, więc tak naprawdę nie mogą używać tego podejścia, ale na szczęście dla tych, którzy to robią, jest to naprawdę proste. :)
Prefiksy get and set nie dodają jasności do twojego API, ale sprawiają, że są bardziej szczegółowe, a powodem, dla którego nie sądzę, aby dodawały użyteczne informacje, jest to, że gdy ktoś musi użyć API, jeśli API ma sens, prawdopodobnie zdaje sobie sprawę, co to jest działa bez przedrostków.
I jeszcze jedno, łatwo zrozumieć, że są to właściwości, ponieważ name
nie jest to czasownik.
W najgorszym przypadku, jeśli interfejsy API są spójne, a osoba nie zdawała sobie sprawy, że name()
jest akcesorium i name(value)
jest mutatorem, będzie musiała tylko raz to sprawdzić w dokumentacji, aby zrozumieć wzorzec.
Chociaż kocham C #, nie sądzę, żeby C ++ w ogóle potrzebował właściwości!