Qualche tempo fa, ho fatto una domanda su SO di qualcosa scritto in C ++, ma invece di ottenere una risposta al problema in questione, i commenti sono andati pazzi per il mio stile di codifica, anche quando ho indicato che era un < a href="http://en.wikipedia.org/wiki/Work_in_progress" title="work in progress"> WIP pezzo di codice e che intendevo ripulirlo più tardi quando avevo il caso base in esecuzione . (Ho ottenuto così tanti voti negativi che ho deciso di tirare la domanda, dato che il mio rappresentante su SO è già quasi abissale)
Mi sono chiesto perché le persone adottino una linea così dura "sei un noob, vai fottiti". Ero accusato di scrivere C ++ come se fosse Java. Qualcosa che non riesco a capire, e questo mi confonde ancora.
Ho programmato in alcune lingue OOP per un certo numero di anni, anche se a intervalli regolari. Scelgo la lingua da utilizzare in termini di librerie disponibili e ambienti di esecuzione ottimali per il lavoro da svolgere. Adotto i modelli di progettazione nel codice OOP e sono abbastanza fiducioso che il mio uso dei pattern sia sano e che OO saggio, posso tenere il mio. Capisco la toolbox OOP, ma scelgo di usare gli strumenti solo quando penso che sia veramente necessario, non solo di usare un trucco accurato per mostrare il mio ingegno di codifica. (Che so che non sono di prim'ordine, ma penso che non siano nemmeno al livello n00b).
Ho progettato il mio codice prima di scrivere una singola riga. Per definire i test, elenco gli obiettivi di una determinata classe e i criteri di test a cui deve aderire. Poiché è più facile per me creare diagrammi di sequenza e quindi scrivere codice, ho scelto di scrivere i miei test dopo che l'interfaccia è diventata ovvia.
Devo ammettere che nel pezzo di codice che ho postato nella domanda, stavo ancora usando i puntatori, invece di usare i puntatori intelligenti. Uso RAII ogni volta che posso. So che RAII corretto significa salvaguardare da nullpointers, ma lavoro in modo incrementale. Era un lavoro in corso e volevo ripulirlo più tardi. Questo modo di lavorare è stato condannato con forza.
A mio avviso, dovrei prima avere un esempio funzionante, così posso vedere se il caso base è un modo di pensare praticabile. Penso anche che ripulire il codice sia tipico della fase di refactoring dell'agile, dopo che il caso base è stato dimostrato. Devo ammettere che anche se sto lentamente ottenendo lo standard Cxx, preferisco usare quello che capisco, invece di correre il rischio di usare concetti che non ho ancora imparato nel codice di produzione. Cerco di provare cose nuove una volta ogni tanto, ma di solito nei progetti di gioco che ho sul lato, solo per quello scopo.
[modifica] Vorrei chiarire che il suggerimento di gnat [1] non è apparso nella ricerca che ho fatto prima di iniziare a porre la mia domanda. Tuttavia, sebbene il suo suggerimento copra un aspetto della domanda, la domanda a cui si è collegato non risponde al cuore della mia domanda, solo una parte di essa. La mia domanda riguarda più la risposta che ho ottenuto al mio stile di codifica e gli aspetti professionali della gestione di diversi stili di codifica e (apparenti) livelli di abilità. Con la mia precedente domanda su SO e la risposta è un esempio calzante. [/ Modifica]
La domanda quindi è: perché deridere qualcuno che non usa il tuo stile di codifica?
Le questioni / sottodivisioni in corso per me sono:
- Perché sarebbe una cattiva pratica di programmazione utilizzare più codice soggetto a errore in situazioni di prototipo, se il refactoring lo rende più robusto in seguito?
- Come può il programma scritto in C ++ essere come se fosse scritto in Java? Cosa lo rende un cattivo programma, (considerando che ho indicato l'intento dello stile attuale e il lavoro previsto per migliorare?)
- Come sarei un cattivo professionista se scegliessi di utilizzare un costrutto che viene utilizzato in un certo paradigma di programmazione (ad esempio OOP / DP)?