Quería aceptar una respuesta a esta pregunta, pero no podía decidir una respuesta para otorgarle la marca de verificación. Como tal, he votado a los autores originales y he creado esto 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 tranquilidad de que no me había salido de los rieles.
@nightcracker
Bueno, el primero es el peligro de exponer demasiada información. El valor predeterminado debe ser privado, no público. Después de eso viene 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 incluso antes de comenzar a pensar en la implementación. El diseño y la implementación de la interfaz de Gene Bushuyev a menudo van de la mano en iteraciones consecutivas hasta que la interfaz final se cristalice.
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 sea raro. Creo que a medida que madure como programador, me inclinaré hacia diseños más completos, pero en este momento todavía sufro por saltar y obtener algunos códigos escritos.
wantTheBest
Comencé lento, con aplicaciones de procedimiento pequeñas / medianas y sin cosas de misión crítica en el trabajo. en el código de procedimiento original, separe las estructuras de datos del código del observador / modificador
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 desea hacer es tener un campo que debe verificarse para determinar la coherencia en el mutador, y dejarlo público
Hace tiempo que sé que este es uno de los puntos fuertes de encapsular los datos ... poder imponer la coherencia y, en realidad, condiciones / rangos / etc.
Eddie loco
Alguien que piensa que debería apegarse al paradigma OO y tratar a los demás en el orden de la declaración 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 sobre algunos de los temas mencionados ... como la metaprogramación. Creo que el gran mensaje en la publicación de CE fue que C ++ es una mezcla de capacidades y estilos que cada uno debe usar para su mejor potencial ... incluido el imperativo si eso es lo que tiene sentido.
Así que de nuevo, ¡gracias a todos los que respondieron!