Migliora la qualità della codifica

3

Ho avuto a che fare con la programmazione da diversi anni (sono ancora uno studente ma con molti stage). Lavorando principalmente con C ++, Python e MATLAB, ho notato che ogni volta che scarico un SDK o una libreria da Internet / GitHub e guardo dentro, il codice è molto più complesso del mio, usando errori di cattura ovunque e altre cose che non verrebbero mai nella mia mente mentre scrivo il mio codice. La mia domanda è: come posso imparare o praticare questo tipo di cose? Dalla mia esperienza, nessun corso di programmazione ha parlato di stile di codifica, quando e come utilizzare try / catch in modo efficiente, come eseguire il debug più veloce ecc ... Non sto pensando di usare il mutex mentre accedo a una variabile da diverse funzioni allo stesso tempo perché il mio codice funziona semplicemente senza di loro e non ho avuto alcun problema fino ad ora.

Attualmente sto lavorando su un progetto che usa Python e Pycharm mi sta aiutando molto a mantenere uno stile di codifica corretto, ma è limitato alla sintassi e alle convenzioni di denominazione.

    
posta Mehdi 23.07.2014 - 04:23
fonte

4 risposte

5

Bene, quando scrivi un codice e lo fai funzionare, chiedi una recensione su Code Review.SE . Questo è quasi esattamente ciò che il sito è per!

Un sacco di persone laggiù sarebbe più che felice di ottenere più rep aiutarti a scrivere codice pulito.

    
risposta data 23.07.2014 - 09:19
fonte
3

Considerando il problema degli errori: esegui molte e molte operazioni di debug, le tue applicazioni ma anche altre. E inoltre, lascia che i tuoi programmi siano usati da altre persone. Faranno cose in modi che non avresti mai immaginato.

Se usi solo il tuo codice, seguirai il percorso pre-programmato nella tua testa e tutto andrà bene.

    
risposta data 23.07.2014 - 09:41
fonte
1

Il modo più affidabile per migliorare è practice . Non solo fai le cose, ma lavori strategicamente al limite delle tue capacità e poi rifletti su ciò che funziona, cosa no e perché.

    
risposta data 23.07.2014 - 04:38
fonte
1

Una regola empirica generale quando si utilizza una libreria esterna (che si fa sempre nella programmazione delle applicazioni, almeno utilizzando la libreria C standard in C) è quella di verificare l'eventuale fallimento della maggior parte delle funzioni che si stanno chiamando.

Un tipico esempio semplice è stdio (3) e <stdlib.h> funzioni. Certamente dovresti sempre controllare quando usi fopen (3) (o popen(3) ) e malloc (3) . Quindi non scrivere codice

 /// BAD SINCE NO CHECKS
 FILE* fil = fopen("outfile.txt", "w");
 fprintf (fil, "something, e.g. one is %d\n", 1);

Ma almeno:

 FILE* fil = fopen("outfile.txt", "w");
 if (!fil) { perror("fopen outfile.txt"); exit(EXIT_FAILURE); };
 fprintf (fil, "something, e.g. one is %d\n", 1);

e allo stesso modo codifica semplicemente

 /// BAD SINCE NO CHECKS
 struct somestruct_st *ptr = malloc(sizeof(struct somestruct_st));
 ptr->somefield = 2;

è sbagliato, dovresti almeno:

 struct somestruct_st *ptr = malloc(sizeof(struct somestruct_st));
 if (!ptr) { perror("malloc somestruct_st"); exit(EXIT_FAILURE); };
 ptr->somefield = 2;

Ci sono alcune funzioni che potresti testare ma spesso no. Un tipico esempio è fclose (3) . Se sei molto attento, dovresti testarlo, ma di solito no.

Si noti che i fallimenti dei casi d'angolo di test (come sopra) possono essere difficili. Su Linux, riducendo le quote e i limiti del disco (con setrlimit (2) ...) potrebbe aiutarti, dal momento che potresti quasi forzare alcuni di questi errori.

Si noti che il software server (che viene eseguito molti giorni) dovrebbe prestare maggiore attenzione al rilevamento e alla segnalazione di errori rispetto a un semplice strumento della riga di comando.

Per i software embedded critici (come il pacemaker cardiaco, l'aeromobile per le compagnie aeree) è essenziale controllare tutti i casi. l'analisi statica del programma può aiutare (ma non è un proiettile d'argento).

Inoltre, studia il codice sorgente di (e contribuisci a) software gratuito esistente . Ti insegnerà molto. E impara diversi linguaggi di programmazione (certamente Ocaml o Haskell, Scheme o CommonLisp ti insegneranno molto!).

Prendi anche il tempo di leggere la documentazione delle funzioni o delle librerie che stai utilizzando.

    
risposta data 23.07.2014 - 10:07
fonte

Leggi altre domande sui tag