Несколько вопросов о методах доступа в C ++ было задано на SO, но ни один из них не смог удовлетворить мое любопытство по этому поводу.
Я стараюсь по возможности избегать аксессоров, потому что, подобно Страуструпу и другим известным программистам, я считаю класс со многими из них признаком плохого объектно-ориентированного программирования. В C ++ я могу в большинстве случаев добавить больше ответственности к классу или использовать ключевое слово friend, чтобы избежать их. Однако в некоторых случаях вам действительно нужен доступ к определенным членам класса.
Есть несколько возможностей:
1. Ни в коем случае не используйте аксессоры
Мы можем просто сделать соответствующие переменные-члены общедоступными. Это недопустимо для Java, но, похоже, для сообщества C ++ это нормально. Однако меня немного беспокоят случаи, когда должна быть возвращена явная копия или ссылка на объект только для чтения (константная), это преувеличено?
2. Используйте методы get / set в стиле Java
Я не уверен, что это вообще с Java, но я имею в виду следующее:
int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount
3. Используйте объективные методы get / set в стиле C.
Это немного странно, но, видимо, встречается все чаще:
int amount(); // Returns the amount
void amount(int amount); // Sets the amount
Чтобы это сработало, вам нужно будет найти другое имя для своей переменной-члена. Некоторые люди добавляют символ подчеркивания, другие - "m_". Мне тоже не нравится.
Какой стиль вы используете и почему?