Convenções para métodos de acessador (getters e setters) em C ++
Várias perguntas sobre métodos acessadores em C ++ foram feitas no SO, mas nenhuma foi capaz de satisfazer minha curiosidade sobre o assunto.
Tento evitar acessadores sempre que possível, porque, como Stroustrup e outros programadores famosos, considero uma aula com muitos deles um sinal de mau funcionamento do sistema operacional. Em C ++, na maioria dos casos, posso adicionar mais responsabilidade a uma classe ou usar a palavra-chave friend para evitá-las. No entanto, em alguns casos, você realmente precisa de acesso a alunos específicos da classe.
Existem várias possibilidades:
1. Não use acessadores
Podemos apenas tornar públicas as respectivas variáveis de membro. Isso não é permitido em Java, mas parece estar bem com a comunidade C ++. No entanto, estou um pouco preocupado com os casos em que uma cópia explícita ou uma referência somente leitura (const) a um objeto devem ser retornadas, isso é exagerado?
2. Use métodos get / set no estilo Java
Não tenho certeza se é de Java, mas quero dizer o seguinte:
int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount
3. Use métodos objetivos de obter / definir no estilo C
Isso é um pouco estranho, mas aparentemente cada vez mais comum:
int amount(); // Returns the amount
void amount(int amount); // Sets the amount
Para que isso funcione, você precisará encontrar um nome diferente para sua variável de membro. Algumas pessoas acrescentam um sublinhado, outras acrescentam "m_". Eu também não gosto.
Qual estilo você usa e por quê?