Volevo accettare una risposta a questa domanda, ma non ho potuto decidere una risposta per dare il segno di spunta. Come tale ho svalutato gli autori originali e ho creato questo come una risposta sommaria. Grazie a tutti quelli che hanno impiegato alcuni minuti, ho scoperto che l'intuizione che mi hai fornito mi ha dato una buona direzione e un po 'di sicurezza che non ero fuori dai binari.
@nightcracker
Well the first is the pitfall of exposing too much information. The default should be private, not public.
After that comes too many getters/setters.
Ho sentito 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 tutto ciò che dipende da loro.
Dominic Gurto
Design the interface before you even start thinking about the implementation.
Gene Bushuyev
Interface design and implementation often go hand in hand in consecutive iterations until the final interface is crystallized.
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 è raro. Penso che mentre maturerò come programmatore mi proporrò a progetti più completi, ma in questo momento soffro ancora di un salto e di scrivere del codice-itis.
wantTheBest
I started slow, with small/medium-size procedural apps, and no mission-critical stuff at work.
in the original procedural code, separate the data structures from the obsever/modifier code
Questo ha molto senso ... Mi piaceva l'idea di mantenere le cose funzionanti al lavoro, ma di rifattorizzare alcune cose non critiche con le classi.
JPM
One thing you definitely don't want to do is have a field that must be checked for consistency in the mutator, and leave it public
Da un po 'di tempo mi sono reso conto che questo è uno dei punti di forza dell'incapsulamento dei dati ... essere in grado di applicare la coerenza e per quella materia condizioni / intervalli / ecc.
Crazy Eddie
Someone thinking that they should stick to the OO paradigm and treat the others on the order of the goto statement in levels of immorality are really missing out by not looking at this paradigm.
The metaprogramming capacity of templates is also quite impressive.
Originariamente mi mancava molto nella risposta di Crazy Eddie, penso perché non avevo letto su alcuni degli argomenti menzionati ... come la metaprogrammazione. Penso che il grande messaggio nel post di CE fosse che il C ++ è una tale miscela di capacità e stili che ognuno dovrebbe essere usato al loro miglior potenziale ... incluso imperativo se questo è ciò che ha un senso.
Quindi di nuovo, grazie a tutti quelli che hanno risposto!