Ви, мабуть, це знаєте, але я б просто зробив наступне:
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 ++ взагалі потребує властивостей!