Qualche tempo fa, ho posto una domanda su SO su qualcosa scritto in C ++, ma invece di ottenere una risposta al problema in questione, i commenti sono impazziti sul mio stile di codifica, anche quando ho indicato che era un pezzo di codice WIP e che intendevo ripulirlo più tardi quando avevo in esecuzione il case base. (Ho ottenuto così tanti voti negativi che ho deciso di porre la domanda, poiché il mio rappresentante su SO è già quasi abissale)
Mi sono chiesto perché la gente adotta un atteggiamento così duro "sei un noob, vai a farti fottere". Ero accusato di scrivere C ++ come se fosse Java. Qualcosa che non riesco a capire e che mi sconcerta ancora.
Ho programmato in diversi linguaggi OOP per un certo numero di anni, anche se a intervalli. 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 sicuro che il mio uso dei modelli sia corretto e che OO sia saggio, posso tenerne uno mio. Capisco la cassetta degli attrezzi OOP, ma scelgo di usare gli strumenti solo quando penso che sia davvero necessario, non usare semplicemente un trucco per mostrare il mio ingegno di programmazione. (Che io so non sono di prim'ordine, ma penso che non siano neanche a livello di n00b).
Progetto il mio codice prima di scrivere una sola 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 pubblicato nella domanda, stavo ancora usando i puntatori, invece di usare i puntatori intelligenti. Uso RAII ogni volta che posso. So che la RAII corretta significa salvaguardare dai punti null, ma lavoro in modo incrementale. Era un lavoro in corso e intendevo ripulirlo più tardi. Questo modo di lavorare è stato fortemente condannato.
A mio avviso, dovrei prima avere un esempio funzionante in modo da poter vedere se il caso base è un modo di pensare praticabile. Mi capita anche di pensare che ripulire il codice sia qualcosa che è tipico della fase di refactoring dell'agile, dopo che il caso di base è stato dimostrato. Devo ammettere che sebbene stia lentamente ottenendo lo standard Cxx, preferisco usare quello che ho capito, invece di correre il rischio di usare concetti che devo ancora padroneggiare nel codice di produzione. Ogni tanto provo nuove cose, ma di solito nei progetti di gioco che ho dalla parte, solo per quello scopo.
[modifica] Vorrei chiarire che il suggerimento di Gnat [1] non è stato mostrato 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, ma solo in parte. La mia domanda riguarda maggiormente la risposta che ho ricevuto al mio stile di codifica e agli aspetti professionali della gestione di diversi stili di codifica e livelli (apparenti) di abilità. Con la mia precedente domanda su SO e la sua risposta è un caso emblematico. [/modificare]
La domanda allora è: perché deridere qualcuno che non usa il tuo stile di programmazione?
Le questioni / suddivisioni a portata di mano per me sono:
- Perché sarebbe una cattiva pratica di programmazione utilizzare più codice soggetto a errori in situazioni di prototipo, se il refactoring lo rendesse più robusto in seguito?
- Come può il programma scritto in C ++ essere come se fosse stato scritto in Java? Ciò che lo rende un cattivo programma, (considerando che ho indicato l'intento dello stile attuale e il lavoro pianificato per migliorare?)
- Come sarei un cattivo professionista se scegliessi di usare un costrutto utilizzato in un determinato paradigma di programmazione (ad es. OOP / DP)?
int
variabili separate per tenere traccia della lunghezza effettiva.