Queria aceitar uma resposta para essa pergunta, mas não consegui decidir uma resposta para dar a marca de seleção. Como tal, votei os autores originais e criei isso como uma resposta resumida. Obrigado a todos que levaram alguns minutos, descobri que o insight que você forneceu me deu uma boa direção e um pouco de garantia de que eu não estava fora dos trilhos.
@nightcracker
Bem, a primeira é a armadilha de expor muita informação. O padrão deve ser privado, não público. Depois disso vem muitos getters / setters.
Eu senti que tinha observado esse problema em ação no passado. Seus comentários também me fizeram lembrar que, ao ocultar as variáveis subjacentes e sua implementação, tenho a liberdade de alterar sua implementação sem destruir nada que dependa delas.
Dominic Gurto
Projete a interface antes mesmo de começar a pensar na implementação. O projeto e a implementação da interface Gene Bushuyev geralmente andam de mãos dadas em iterações consecutivas até que a interface final seja cristalizada.
Eu pensei que o comentário de Dominic era um ótimo ideal para aspirar, mas acho que o comentário de Gene realmente atinge a realidade da situação. Até agora, vi isso em ação ... e me sinto um pouco melhor por não ser incomum. Penso que, à medida que amadurecer como programador, vou me inclinar para projetos mais completos, mas agora ainda sofro com o salto e recebo algum código por escrito.
wantTheBest
Comecei devagar, com aplicativos procedimentais de tamanho pequeno / médio e nenhum material de missão crítica no trabalho. no código processual original, separe as estruturas de dados do código obsever / modificador
Isso faz muito sentido ... Gostei da ideia de manter as coisas funcionando, mas refatorar algumas das coisas não críticas com as classes.
jpm
Uma coisa que você definitivamente não quer fazer é ter um campo que deve ser verificado quanto à consistência no mutador e deixá-lo público
Eu sei há algum tempo que esse é um dos pontos fortes de encapsular os dados ... poder impor consistência e, por esse motivo, condições / intervalos / etc.
Crazy Eddie
Alguém que pensa que deveria seguir o paradigma OO e tratar os outros na ordem da declaração goto em níveis de imoralidade está realmente perdendo por não olhar para esse paradigma. A capacidade de metaprogramação de modelos também é bastante impressionante.
Originalmente, eu errei muito na resposta de Crazy Eddie, acho que porque não tinha lido alguns dos tópicos mencionados ... como metaprogramação. Eu acho que a grande mensagem no post da CE foi que o C ++ é uma mistura de recursos e estilos que cada um deve ser usado com seu melhor potencial ... incluindo o imperativo, se é o que faz sentido.
Então, novamente, obrigado a todos que responderam!