Il diavolo è nei dettagli
Non sei incompetente. Ti manca solo un po 'di attenzione ai dettagli e non sei abbastanza esigente.
Consenti al compilatore di essere la tua guida
Dici di essere un programmatore C. Lascia che il compilatore ti chieda e compili (per gcc) almeno con: -Wall -Werror -ansi -pendantic -Wstrict-prototypes
.
... e invita i suoi aiutanti alla festa!
Assicurati di eseguire alcuni strumenti di qualità del codice sul tuo codice. Usa la pletora di linters , analizzatori di codici statici e altri che hai a portata di mano per cercare di rilevare possibili errori. Utilizza Valgrind .
Aggiungi vincoli al mix
Impegnati a scrivere codice che si rivolge a diversi sistemi operativi e architetture. Alcuni sono meno indulgenti di altri quando si tratta di rovinare le allocazioni di memoria, e vedrai vari risultati nel modo in cui gestiscono i loro modelli di threading. Mentre lavorerai attraverso queste differenze, imparerai a appianare i punti problematici.
Sviluppa un occhio attento per i test
Tuttavia non è tutto, e non possono indovinare cosa stai cercando di fare. Quindi prendi l'abitudine di pensare a casi limite e buoni test per il tuo codice. Alla fine, queste cose verranno per te in modo naturale e scrivere un codice più robusto diventa un'abitudine. Non hai ancora l'abitudine.
Fail Early e Fail Hard
Scrivi un codice che fallisce davvero. Significa che quando qualcuno sbagliato , dovrebbe davvero fallire difficile e andare in crash, quindi il problema è notevole e deve essere affrontato, invece di cercare la via d'uscita cercando di gestire gli errori e rimanere in vita il più a lungo possibile.
Ci sono diverse scuole di pensiero, ed entrambi hanno vantaggi. Programmazione difensiva è ottimo per scrivere software che è alquanto tollerante agli errori e non si arresta in modo anomalo compromettendo la sicurezza della piattaforma. Tuttavia a volte si desidera utilizzare un approccio design-by-contract e applicare questi contratti (e gli sviluppatori sanno quando andranno le cose sbagliato all'inizio del ciclo di sviluppo).
Pratica, pratica, pratica
Naturalmente, tutto quanto sopra è già in merito. Ma forse quello che ti manca è un incentivo per farlo e fare qualcosa di grande. Parli di avere problemi non appena le cose si complicano. Quindi esci dalla tua zona di comfort e costruisci qualcosa di complesso. Cosa ti manca nella tua vita virtuale, su base regolare? Se riesci a pensare a qualcosa, puoi costruirlo? Inizia semplice e crea qualcosa di più grande e più grande man mano che vai. Guardalo e migliora il suo design generale mentre vai. Poi magari buttalo fuori e fai una riscrittura completa: ora che hai una visione migliore, dovresti essere in grado di ricostruire questo sistema complesso più velocemente e con un design migliore che non soffre dei suoi difetti iniziali.
Allenati.