Соглашения о методах доступа (методах получения и установки) в C ++

В SO было задано несколько вопросов о методах доступа в C ++, но ни один из них не смог удовлетворить мое любопытство по этому вопросу.

Я стараюсь по возможности избегать методов доступа, потому что, как и Страуструп, и другие известные программисты, я считаю класс, многие из которых являются признаком плохого ОО. В C ++ я могу в большинстве случаев добавить больше ответственности к классу или использовать ключевое слово friend, чтобы избежать их. Однако в некоторых случаях вам действительно нужен доступ к конкретным ученикам.

Существует несколько возможностей:

1. Ни в коем случае не используйте методы доступа

. Мы можем просто сделать соответствующие переменные-члены открытыми. Это не разрешено в Java, но, похоже, все в порядке с сообществом C ++. Тем не менее, я немного беспокоюсь о случаях, когда явная копия или постоянная ссылка на объект (const) должны быть возвращены, это преувеличено?

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_". Мне тоже не нравится.

Какой стиль вы используете и почему?

72
задан 2 revs, 2 users 96% 18 July 2013 в 09:46
поделиться