Queste sono solo considerazioni, non ho una domanda
anzi no, una sì: parliamone, scambiamo punti di vista
A mia idea il grande pregio del C è la sua concisione
Alcune cose sono scelte ben precise che risalgono alla AT&T e ai Bell Labs
HIGH e true sono solo e sottolineo solo delle scorciatoie (HIGH poi è pure un macro) per indicare 1
stessa cosa per LOW e false
per definizione, e per precisa scelta negli anni 60, non serve fare un test == HIGH
se questa cosa non è chiara non si è capito lo spirito del C
di recente ho visto alcune cose che stanno tra il Barocco e il Bizantino
una cosa così è deleteria da vedere, scrivere e capire:
bool rilevoMovimento(int pir) {
int pirVal = digitalRead(pir);
return (pirVal == HIGH);
}
tralascio altri commenti sull'intero argomento dal quale go tratto il frammento di codice, che sarebbere al vetriolo, ma non sono argomento di questo topic
dicevo, questo frammento di codice è come minimo barocco se non puro bizantinismo:
se chiama una funzione che usa una variabile (oltretutto inutilmente grande) locale per conservare un risultato che viene usato solo una volta per restituire un test inutile
bool rilevomovimento(int pir){
return digitalread(pir);
}
fa lo stesso lavoro senza un test inutile e senza usare una variabile locale
ma si vede bene che una funzione di una sola riga è a sua volte inutile, si scrive la riga direttamente
funzione che a sua volta è usata in una sola riga di un ciclo...
questo NON è un esempio di come programmare in C
Chi, da inesperto legge queste righe, NON capisce lo spirito del C e poi combina cose come quelle che si vedono nel topic dal quel ho estratto il frammento
se vogliamo aiutare è cosa positiva, ma da aiutare a indicare strade che sono contrarie allo spirito del C ne passa tanta di acqua sotto i ponti
nessuno me ne voglia per queste mie parole, l'insonnia ha guidato la mia tastiera, vogliono solo essere spunto per una discussione, magari ne escono linee guida che possono essere di aiuto anche a me
sopratutto evitiamo di dire che tutto questo è fatto permigliorare la leggibilità: non è vero, e comunque nello stesso topic si trovano costrutti FOR e IF senza le parentesi graffe,
for (int i = 0; i < NUMPIR; i++)
if (rilevoMovimento(pirPin[i]) )
attivoLuce();
delay(500);
che leggibilità ci sarebbe in questo?
la if fa parte del for o no?
la attivoluce viene eseguita dalla if o dal for?
la delay è dentro nel for?
oltretutto i rientri sono sbagliati
Questo non è nemmeno un modo di programmazione bizantino, è proprio ermetico
difficile da comprendere e poi in futuro da mantenere