Arduino e Raspberry Pi principianti? Ecco come scrivere un codice pulito
Quando inizi a leggere sempre di più sullo sviluppo del software, spesso trovi la frase “codice pulito”. Nella sua forma più pura, questo è un codice che è facile da leggere per gli altri. È espressivo e bello, e puoi facilmente discernerne l'intento semplicemente guardandolo.
Scrivere codice pulito è più facile a dirsi che a farsi.
Arduino: Guida per principianti Arduino: Guida per principianti Arduino è una piattaforma di prototipazione elettronica open source basata su hardware e software flessibili e facili da usare. È pensato per artisti, designer, hobbisti e chiunque sia interessato a creare oggetti o ambienti interattivi. Per saperne di più tinkerer, o stai costruendo Raspberry Pi Raspberry Pi: The Unofficial Tutorial Raspberry Pi: The Unofficial Tutorial Se sei un attuale proprietario Pi che vuole saperne di più o un potenziale proprietario di questo dispositivo di dimensioni carta di credito, questo isn sei una guida che vuoi perdere. Leggi Altre applicazioni con Python, o sei anche uno sviluppatore web, ci sono alcuni consigli utili da seguire che renderanno il tuo codice più facile da leggere da altri. Ecco cosa devi sapere.
Essere coerente
Forse il primo, e più ovvio suggerimento, deve essere coerente in quello che fai. Un buon esempio di questo è seguire gli stessi schemi quando si nominano le funzioni Le basi assolute della programmazione per principianti (parte 2) Le basi assolute della programmazione per principianti (parte 2) Nella parte 2 della nostra guida assoluta ai principianti alla programmazione, sarò che copre le basi delle funzioni, i valori di ritorno, i loop e i condizionali. Assicurati di aver letto la parte 1 prima di affrontare questo, dove ho spiegato ... Leggi di più e variabili Nozioni di base sulla programmazione del computer 101 - Variabili e tipi di dati Le basi della programmazione computerizzata 101 - Variabili e tipi di dati Avendo introdotto e parlato un po 'di Object Oriented Programmando prima e da dove proviene il suo omonimo, ho pensato che fosse ora di passare attraverso le basi assolute della programmazione in un modo non specifico del linguaggio. Questo ... Per saperne di più. Dovresti scegliere una convenzione di denominazione e seguirla.
Quindi, quale convenzione di denominazione dovresti usare?
Bene, se stai scrivendo Python per Raspberry Pi, la risposta è chiara. Lo standard PEP-8 (il barometro per un buon codice Python pulito) dice che i nomi delle variabili dovrebbero essere in minuscolo, con ogni parola separata da un trattino basso. Per esempio: gpio_input e moisture_sensor_reading.
La guida allo stile di Arduino afferma implicitamente che dovresti scrivere le tue variabili in quello che è noto come Camel Case. Qui, le parole non sono separate da nulla, ma la prima lettera di ogni parola è in maiuscolo, tranne che per la prima parola. Per esempio: buttonPressed e temperatureReading.
Esistono, naturalmente, altri stili di denominazione delle variabili. Quanto sopra è semplicemente raccomandato dalle guide di stile ufficiali. Ma qualunque cosa tu scelga, assicurati di seguirla e usa la stessa convenzione di denominazione per tutto il tuo programma.
Scrivi commenti significativi
I commenti sono un ottimo modo per spiegare cosa fa il tuo programma. Puoi indicare cosa fa ogni funzione e ogni variabile rappresenta nelle tue parole. Ciò semplifica la lettura da parte di terzi del codice, ma rende anche più semplice il mantenimento del codice, in quanto alla fine lo capisci meglio.
Ma se non scrivi i tuoi commenti in un modo che sia ovvio ed espressivo, allora potresti non preoccuparti troppo.
Quando scrivi commenti, dovresti provare a spiegare il perché del codice, oltre al come. Prova a rendere l'intento abbondantemente chiaro e dì qualcosa sul codice che non può dirsi. Quindi, piuttosto che:
// aggiorna la lettura
Considera la scrittura:
// Aggiorna il numero di volte in cui il raggio laser è stato rotto, prima di mandarlo in tweet
Assicurati di scrivere frasi complete, grammaticalmente corrette. Inoltre, lo standard PEP-8 per Python dice che dovresti sempre scrivere i tuoi commenti e le tue variabili in inglese. Questo rende più facile per gli altri collaborare con te, se decidessi di rilasciare il tuo codice come open source, dato che l'inglese è praticamente la lingua franca dello sviluppo del software.
La guida allo stile di Arduino va anche oltre, e dice che devi commentare ogni blocco di codice, ogni ciclo e ogni dichiarazione di variabile.
Personalmente, penso che sia un po 'estremo. Se stai scrivendo nomi di variabili espressive, il tuo codice è già auto-documentante. Detto questo, non esitare ad aggiungere commenti dove pensi che siano necessari. Usa il tuo buon giudizio.
Semplifica il tuo codice
Quando stai imparando a sviluppare per la prima volta Come imparare la programmazione senza tutti gli stress Come imparare la programmazione senza tutti gli stress Forse hai deciso di perseguire la programmazione, sia per una carriera che per un semplice hobby. Grande! Ma forse stai iniziando a sentirti sopraffatto. Non così eccezionale. Ecco l'aiuto per facilitare il tuo viaggio. Per saperne di più, sei spesso pieno di un immenso flusso di entusiasmo. Leggi tutto ciò che puoi sulla lingua, il framework o la piattaforma scelti. Inizi a imbattersi in concetti che non avevi mai saputo prima e sei troppo ansioso di usarli nel tuo codice.
Cose come operatori ternari, che ti permettono di condensare la logica di un “se la dichiarazione” come questo:
int x = 5; se (x < 10) y = 1; else y = 0;
In una singola riga, come questa:
int x = 5; int y = (x < 10) ? 1 : 0; printf("%i\n", y);
Gli operatori ternari sono certamente interessanti e vi incoraggio a leggerli. Ma quando scrivi un codice che è facile da leggere per gli altri, è meglio evitarlo. Questo è solo un esempio, però.
La guida allo stile di Arduino ti incoraggia anche a evitare puntatori, #define di dichiarazioni e tipi di dati diversi dallo standard: booleano, char, byte, int, unsigned int, long, unsigned long, float, double, string, array e void. Dovresti evitare tipi di dati come uint8_t, in quanto questi sono usati meno frequentemente, non sono spiegati nella documentazione, e non sono terribilmente concisi.
Rientro e Approfitta dello spazio bianco
Quando si tratta di scrivere codice pulito, gli utenti Python sono avvantaggiati, poiché l'interprete standard di Python richiede tutto il codice dovere essere strutturato in modo sensato e rientrato. Se non indentate dopo ogni funzione, dichiarazione di classe e istruzione condizionale, il vostro programma semplicemente non funzionerà.
Su Arduino, non c'è nulla che ti impedisca di scrivere codice non strutturato e compatto. Questo, in definitiva, è difficile da leggere e difficile da mantenere.
Ma non c'è niente che ti impedisca di strutturare meglio il tuo codice.
Per prima cosa, stabilisci quanto intendi far rientrare. Dovresti utilizzare la chiave di tabulazione in modo giudizioso, poiché ogni editor di testo tratta il codice ASCII per la scheda in modo diverso, e se condividi il tuo codice con qualcun altro, c'è la possibilità che possano inavvertitamente introdurre incongruenze nella tua indentazione. Queste incongruenze possono infrangere il tuo programma, in particolare se stai utilizzando un linguaggio sensibile allo spazio bianco come CoffeeScript CoffeeScript È JavaScript senza i mal di testa CoffeeScript È JavaScript senza mal di testa Non mi è mai piaciuto scrivere su JavaScript così tanto. Dal giorno in cui ho scritto la mia prima linea usandola, mi sono sempre dispiaciuto del fatto che qualsiasi cosa scrivo in esso finisca sempre per sembrare un Jackson ... Read More o Python. Questo articolo di OpenSourceHacker spiega in maggior dettaglio perché il tasto tab dovrebbe essere evitato.
Tendo ad usare quattro spazi per ogni rientro, ma il numero complessivo dipende da te. Solo finché sei coerente.
È possibile configurare l'IDE e l'editor di testo per trattare ciascuna scheda come un numero di spazi impostato, tuttavia, consentendo di utilizzare il tasto Tab senza il rischio di introdurre problemi. Se usi Sublime Text 2, controlla la loro documentazione ufficiale. Se usi Vim, modifica il tuo .vimrc file con queste linee. L'editor di Arduino lo fa automaticamente per te e inserisce due spazi ogni volta che premi la scheda.
Quindi, devi semplicemente sapere dove indentare il tuo codice. Come regola generale, dovresti sempre rientrare dopo ogni dichiarazione di funzione e dopo ciascuna Se, altro, per, mentre, interruttore, e Astuccio dichiarazione.
Molti editor hanno la capacità di indentare interi blocchi di codice contemporaneamente. Se si utilizza Sublime Text 2, è possibile impostare una combinazione di tasti di scelta rapida o combinazione di tasti. Altrimenti, puoi usare la combinazione di default, che (su OS X) lo è Cmd + [. Nell'editor di Arduino, puoi correggere automaticamente il rientro del file premendo T Ctrl + su Windows e Linux e T Cmd + su OS X.
Dipende interamente dal tuo editore, quindi leggi il manuale!
Non ripetere te stesso
Uno dei più importanti mantra del buon sviluppo del software è non ripeterti, che viene spesso abbreviato in ASCIUTTO.
Scrivere codice DRY è incredibilmente importante, in quanto garantisce che la logica del tuo programma sia coerente, ti consente di apportare modifiche in una volta e di averla riflessa globalmente, e passi meno tempo a scrivere la stessa cosa ancora e ancora.
Il modo migliore per rimanere ASCIUTTO è con un uso liberale e generoso di funzioni - incapsulare un'attività ripetuta con un blocco di codice che puoi chiamare ancora e ancora e assicurarti che ognuno sia distinto e ben scritto.
Una buona funzione è breve; la guida PEP-8 dice poco sulla durata della funzione, ma Clean Code: un manuale di software agile Artigianato di Bob Martin (altamente raccomandato) dice che “le funzioni non dovrebbero mai essere lunghe 20 righe”. Preferibilmente, lo sarebbero anche più breve di quello.
Le funzioni dovrebbero anche fare esattamente una cosa. Hai bisogno di una funzione che faccia due cose? Scrivi due funzioni.
Questi suggerimenti rendono facile seguire il flusso di un programma e, in ultima analisi, eseguirne il debug, se necessario. C'è anche un ulteriore vantaggio per gli utenti di Arduino, che sono strettamente vincolati dalle limitazioni di archiviazione, in quanto vengono rimosse le ridondanze. Ciò si traduce in programmi più piccoli.
Sii esplicito
Un altro importante mantra dello sviluppo del software è “esplicito è meglio di implicito”. Significa che il tuo codice dovrebbe quasi gridare cosa sta facendo a prima vista. La guida in stile Arduino dice che una cosa del genere dovrebbe essere evitata:
if (buttonPressed) doSomething ();
Piuttosto, dovresti rendere evidente ciò che sta accadendo. Invece, scrivi qualcosa come questo:
if (buttonPressed == True) doSomething ();
Esci e codice (bene)
Scrivere codice pulito è sorprendentemente semplice. Devi semplicemente essere coerente in tutto ciò che fai, evitare ridondanze ed essere esplicito. Ricorda, il codice pulito è semplicemente un codice leggibile.
C'è molto materiale per leggere su questo argomento. Un ottimo punto di partenza è il tutorial di Arduino e le guide di stile API, seguite dallo standard PEP-8 se stai costruendo app Python per Raspberry Pi. Se stai usando un'altra lingua (come Javascript nella scheda Tessel Building The Internet of Things, With Tessel: The Node.js Development Board Costruire l'Internet delle cose, con Tessel: The Node.js Development Board Tessel è una nuova generazione di scheda di sviluppo che funziona interamente su Node.js, e dopo un successo di Kickstarter, ora hanno raggiunto il punto di essere disponibili per tutti.Per saperne di più), controlla Google per una guida di stile ufficiale.
Se stai cercando una lettura più accademica sull'argomento, dai un'occhiata a Clean Code: A Handbook of Agile Software Craftsmanship di Bob Martin. L'ho menzionato prima in questo articolo e viene altamente raccomandato. Sebbene utilizzi Java per illustrare concetti, molte idee possono essere passate ad altri linguaggi, come Python e C per Arduino.
Ci sono anche alcuni blog online brillanti che illustrano come scrivere un codice buono, descrittivo e pulito. Ti consiglio di fare il check-out “Pulito, codice di alta qualità: una guida su come diventare un programmatore migliore” di Arash Arabi che scrive per butterfly.com.au, e “The Fundamentals of Writing Clean Code” di Chris Reynolds, scrivendo per webdevstudios.com.
Sebbene non sia esplicitamente correlato al codice pulito, è anche utile sapere quali funzioni e librerie sono meglio evitate nella lingua scelta. Ad esempio, se stai imparando PHP, dovresti evitare il “mysql” librerie, e se stai costruendo prodotti fisici con Arduino, non dovresti mai usare la funzione Ritardo funzione Ritardo Arduino, e Perché non dovresti usarla Funzione Ritardare Arduino, e Perché non dovresti usarla Mentre delay () è a portata di mano per le dimostrazioni di base su come funziona Arduino, davvero non dovresti usarlo nel mondo reale. Ecco perché e cosa invece dovresti usare. Leggi di più .
Ricorda, il codice che è più facile da leggere è più facile da mantenere. Inoltre, se dovessi rimanere bloccato con qualcosa, è più facile per qualcuno leggerlo e aiutarti.
Hai qualche consiglio per scrivere codice pulito? Mi sono perso qualcosa? Dimmi! Lasciami un commento qui sotto, e fammi sapere.
Crediti fotografici: Dry Bed (Premasagar), Little TAB Key (Kai Hendry), 2015 (Wikilogia)
Scopri di più su: Programmazione.