Convenios para métodos de acceso (captadores y establecedores) en C ++

Se han hecho varias preguntas sobre métodos de acceso en C ++ en SO, pero ninguna pudo satisfacer mi curiosidad sobre el tema.

Intento evitar los accesores siempre que sea posible, porque, como Stroustrup y otros programadores famosos, considero que una clase con muchos de ellos es un signo de mala OO. En C ++, en la mayoría de los casos puedo agregar más responsabilidad a una clase o usar la palabra clave friend para evitarlos. Sin embargo, en algunos casos, realmente necesita acceso a miembros específicos de la clase.

Hay varias posibilidades:

1. No use los accesos en absoluto

Simplemente podemos hacer públicas las respectivas variables miembro. Esto es una opción prohibida en Java, pero parece estar bien con la comunidad C ++. Sin embargo, estoy un poco preocupado por los casos en los que se debe devolver una copia explícita o una referencia de solo lectura (const) a un objeto, ¿es exagerado?

2. Utilice los métodos get / set de estilo Java

No estoy seguro si es de Java, pero quiero decir esto:

int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount

3. Use métodos objetivos de obtener / establecer estilo C

Esto es un poco extraño, pero aparentemente cada vez más común:

int amount(); // Returns the amount
void amount(int amount); // Sets the amount

Para que eso funcione, tendrá que encontrar un nombre diferente para su variable miembro. Algunas personas agregan un guión bajo, otras anteponen "m_". A mí tampoco me gusta.

¿Qué estilo usas y por qué?

Respuestas a la pregunta(9)

Su respuesta a la pregunta