Quería aceptar una respuesta a esta pregunta, pero no podía decidir una respuesta para otorgar la marca de verificación. Como tal, he actualizado a los autores originales y lo he creado como una respuesta resumida. Gracias a todos los que se tomaron unos minutos, descubrí que la información que me brindaron me dio una buena dirección y un poco de seguridad de que no estaba fuera de lugar.
@nightcracker
Bueno, el primero es el escollo de exponer demasiada información. El valor predeterminado debe ser privado, no público.
Después de eso vienen demasiados captadores / setters.
Sentí que había observado este problema en acción en el pasado. Sus comentarios también me hicieron recordar que al ocultar las variables subyacentes y su implementación, soy libre de cambiar su implementación sin destruir nada que dependa de ellas.
Dominic Gurto
Diseñe la interfaz antes de que empiece a pensar en la implementación.
Gene Bushuyev
El diseño y la implementación de la interfaz a menudo van de la mano en iteraciones consecutivas hasta que la interfaz final se cristaliza.
Pensé que el comentario de Dominic era un gran ideal al que aspirar, pero creo que el comentario de Gene realmente golpea la realidad de la situación. Hasta ahora he visto esto en acción ... y me siento un poco mejor de que no es raro. Creo que a medida que voy madurando como programador me inclinaré hacia diseños más completos, pero en este momento todavía sufro por saltar y obtener un código escrito.
wantTheBest
Comencé lento, con aplicaciones de procedimientos de tamaño pequeño / mediano y sin tareas críticas en el trabajo.
en el código de procedimiento original, separe las estructuras de datos del código obsever / modifier
Esto tiene mucho sentido ... Me gustó la idea de mantener las cosas funcionando en el trabajo, pero refactorizar algunas de las cosas no críticas con las clases.
jpm
Una cosa que definitivamente no quieres hacer es tener un campo que deba verificarse para que sea consistente en el mutador, y dejarlo público
Por un tiempo he sabido que este es uno de los puntos fuertes de encapsular los datos ... ser capaz de imponer la coherencia y, para ello, las condiciones / rangos / etc.
Eddie loco
Alguien que piensa que debería atenerse al paradigma OO y tratar a los demás en el orden de la declaración de goto en niveles de inmoralidad, realmente se está perdiendo al no mirar este paradigma.
La capacidad de metaprogramación de las plantillas también es bastante impresionante.
Originalmente me perdí mucho en la respuesta de Crazy Eddie, creo que porque no había leído algunos de los temas mencionados ... como metaprogramación. Creo que el gran mensaje en la publicación de CE fue que C ++ es una combinación tal de capacidades y estilos que cada uno debería usar en su mejor potencial ... incluido el imperativo si eso es lo que tiene sentido.
Nuevamente, ¡gracias a todos los que respondieron!