Impariamo a scrivere codice autodocumentante

Ho visto in giro che alcuni programmatori hanno usato un modo singolare di usare le #define.

Es. Ha i scritto un funzione che prende 4 argomenti di cui 3 fanno capo a qualcosa che puoi computare usando il preprocessore C. Supponiamo la seguente define:

#define KEY01 (V_KEY01 / ADC_RES) - TOLLERANCE, (V_KEY01 / ADC_RES) + TOLLERANCE, 1

Posso usare la costante "KEY01" per fornire dei parametri ad una funzione, simile a questa:

keyPressed(unsigned int adcValue, unsigned int minValue, unsigned int maxValue, short int nKey);

La chiamata sarebbe così:

res = keyPressed(adcValue, KEY01)

In pratica è un modo per raggruppare dati precalcolati dal preprocessore sotto un nome esplicativo.

Ciao.

roba da Arabia Saudita!!!!

Secondo me il modo migliore di fare le cose è sempre quello più chiaro. In questo mi incasinerei anch'io se tra 6 mesi andassi a rileggermi il codice. Difatti sulle cose un po' complicate commento ogni singola riga di codice ;)

Anch io mi incasinerei e sbaglierei di scrivere le variabili. Ha senso usare variabili il cui nome dice qualcosa del loro significato- Ciao Uwe

Secondo me il modo migliore di fare le cose è sempre quello più chiaro. In questo mi incasinerei anch'io se tra 6 mesi andassi a rileggermi il codice. Difatti sulle cose un po' complicate commento ogni singola riga di codice smiley-wink

Si diciamo che i commenti alle variabili o costanti non devono mancare anche in questo caso. Io ho fatto un esempio non proprio calzante, in realtà queste define possono tornare utile ad esempio se hai una tua funzione che prende 3 o più argomenti che conosci a tempo di compilazione, quali ad esempio i registri della seriale o I2c o i timer ecc. Per evitare di inserire la lista di argomenti li riunisci tutti sotto un nome evocativo.

I commenti possono essere più stringati e non devi ricordarti l'ordine degli argomenti, io lo visto usato con funzioni per impostare, leggere i pin, ed ho voluto usarlo per raggruppare dei tasti letti via ADC. Dal codice principale non usero questi, ma una semplice funzione che ritorna il numero del tasto premuto, chiamata all'interno di una ISR(ADC_vect).

Ciao.