Volevo accettare una risposta a questa domanda, ma non potevo decidere una risposta per assegnare il segno di spunta. Come tale ho votato gli autori originali e l'ho creato come una risposta di sintesi. Grazie a tutti quelli che hanno impiegato qualche minuto, ho scoperto che l'intuizione che mi hai fornito mi ha dato una buona direzione e una piccola rassicurazione che non ero fuori dai binari.
@nightcracker
Bene, il primo è la trappola di esporre troppe informazioni. L'impostazione predefinita dovrebbe essere privata, non pubblica. Dopo di ciò arrivano troppi getter / setter.
Sentivo di aver osservato questo problema in azione in passato. I tuoi commenti mi hanno fatto anche ricordare che nascondendo le variabili sottostanti e la loro implementazione, sono libero di cambiare la loro implementazione senza distruggere nulla che dipenda da loro.
Domenico Gurto
Progetta l'interfaccia prima ancora di iniziare a pensare all'implementazione. La progettazione e l'implementazione dell'interfaccia di Gene Bushuyev spesso vanno di pari passo in iterazioni consecutive fino a quando l'interfaccia finale non viene cristallizzata.
Ho pensato che il commento di Dominic fosse un grande ideale a cui aspirare, ma penso che il commento di Gene colpisca davvero la realtà della situazione. Finora l'ho visto in azione ... e mi sento un po 'meglio che non sia raro. Penso che quando maturerò come programmatore mi sposterò verso progetti più completi, ma in questo momento soffro ancora di saltare e ottenere un po 'di codice scritto.
wantTheBest
Ho iniziato lentamente, con app procedurali di piccole / medie dimensioni e senza roba mission-critical al lavoro. nel codice procedurale originale, separare le strutture di dati dal codice obsever / modificatore
Questo ha molto senso ... Mi piaceva l'idea di far funzionare le cose al lavoro, ma di riformattare alcune delle cose non critiche con le classi.
JPM
Una cosa che sicuramente non vuoi fare è avere un campo che deve essere verificato per coerenza nel mutatore e lasciarlo pubblico
Ho saputo per un po 'che questo è uno dei punti di forza dell'incapsulamento dei dati ... essere in grado di imporre coerenza e, per quel motivo, condizioni / intervalli / ecc.
Crazy Eddie
Qualcuno che pensa che dovrebbero attenersi al paradigma OO e trattare gli altri sull'ordine della dichiarazione di goto in livelli di immoralità si sta davvero perdendo non guardando questo paradigma. Anche la capacità di metaprogrammazione dei modelli è piuttosto impressionante.
Inizialmente mi mancava molto nella risposta di Crazy Eddie, penso perché non avevo letto alcuni degli argomenti citati ... come la metaprogrammazione. Penso che il grande messaggio nel post di CE sia stato che il C ++ è una tale miscela di capacità e stili che ognuno dovrebbe essere usato per il suo miglior potenziale ... incluso l'imperativo se questo è ciò che ha senso.
Quindi, grazie a tutti quelli che hanno risposto!