Scopri i suggerimenti per il debug del codice e la correzione degli errori in MIT App Inventor
Queste sono le attività di questa lezione:
CHE COS'È IL DEBUG?
Il debug è il processo che i programmatori utilizzano per capire perché il loro codice non funziona, e poi per correggerlo in modo che funzioni.
Il termine debugging deriva dall'ammiraglio Grace Hopper, una pioniera dell'informatica. Negli anni '40 stava lavorando al computer Mark II dell'Università di Harvard e una falena si incastrò nel computer impedendogli di funzionare.
Sbarazzandosi della falena, ha detto che stavano "debuggando" il sistema. Oggi i programmatori usano questo termine per indicare "la correzione degli errori nel mio codice".
SUGGERIMENTI PER LA CODIFICA
Il debug può spesso essere la parte più frustrante e lunga della codifica, quindi è davvero importante lasciargli molto tempo!
E anche di essere paziente!
PICCOLI TAGLI
A volte i programmatori sono tentati di codificare l'intera applicazione in una sola volta e poi testarla.
Non cadere in questa tentazione!!!
Se qualcosa non funziona correttamente, come è probabile, è difficile capire da dove iniziare per cercare di risolvere l'errore.
Suddividi la codifica della tua applicazione in piccoli pezzi.
Fai funzionare una cosa prima di iniziare quella successiva.
Codifica un po', testa un po', conferma che funziona, poi codifica ancora un po', testa ancora un po' e così via.
Ad esempio, se la tua applicazione ha 5 pulsanti che fanno tutti cose diverse,
- Codifica l'azione per il primo pulsante
- Poi fai un test per verificare che funzioni.
- Passa al secondo pulsante
- Ripeti.
È meglio correggere il codice in un solo punto piuttosto che tornare indietro e correggerlo in 5 punti se c'è un errore nel codice.
CONTROLLO DELLA VERSIONE
Supponiamo che tu segua la regola dei "piccoli pezzi" e che una parte della tua applicazione sia già pronta e funzionante.
Aggiungi un nuovo codice e improvvisamente tutto smette di funzionare.
OH NO!
Provi a cancellare il nuovo codice ma la tua applicazione non funziona. Non sei sicuro di cosa sia andato storto e vorresti avere un pulsante "annulla".
Per evitare scenari come questo puoi salvare versioni della tua applicazione man mano che le parti funzionano.
In questo modo, se fai un errore e non sai come risolverlo, puoi tornare all'ultima versione funzionante che hai salvato.
Puoi anche usare il controllo di versione per sperimentare nuove funzionalità senza preoccuparti di rompere la tua applicazione funzionante.
Esistono due modi per salvare versioni diverse in App Inventor: "Salva con nome" e "Punto di controllo".
Il "Punto di controllo" salverà una copia con il nome da te assegnato, ma continuerai a lavorare nella versione originale. L'idea è quella di fare un "checkpoint" della versione funzionante e continuare lo sviluppo nella versione principale del progetto.
L'opzione "Salva il progetto con nome crea una copia del codice su cui stai lavorando e la salva con un nuovo nome. Tutte le modifiche apportate saranno presenti nella nuova copia.
CROLLO DEI BLOCCHI
Il collasso dei blocchi è un modo per mantenere il codice organizzato, dato che l'area di lavoro del codice inizia ad essere affollata di blocchi.
Se fai clic con il tasto destro del mouse su un blocco, vedrai un'opzione che ti consentirà di chiuderlo.
Per espandere nuovamente i blocchi, clicca con il tasto destro del mouse e seleziona Espandi blocco.
I blocchi collassati si comprimeranno in una barra sullo schermo.
Funzionano come i blocchi normali, ma occupano meno spazio. Questo può essere utile se hai dei blocchi che non hai più bisogno di modificare e vuoi ripulire lo schermo.
DISABILITA I BLOCCHI
Puoi anche disabilitare i blocchi.
Rimangono sullo schermo ma non vengono eseguiti nell'app.
Con i blocchi disabilitati, puoi testare la tua applicazione senza alcuni blocchi di codice. Potrai abilitarli in seguito e funzioneranno.
Puoi anche disattivare i blocchi che hai utilizzato solo per i test, come i Notifier.
Ci sono due modi per disabilitare i blocchi in App Inventor
Trascinando semplicemente i blocchi fuori da un blocco gestore di eventi, questi vengono disabilitati e non possono essere eseguiti. Poiché non fanno parte di alcun evento, non è possibile che vengano eseguiti. Puoi sempre reinserirli per utilizzarli.
Puoi anche cliccare con il tasto destro del mouse su un blocco o un gruppo di blocchi e scegliere "Disattiva blocco". I blocchi appariranno grigi per indicare che non verranno eseguiti. In questo modo puoi disabilitare un intero gruppo di blocchi.
Per abilitare nuovamente i blocchi, basta cliccare con il tasto destro del mouse e scegliere "Abilita blocco".
COMMENTI
I programmatori spesso lasciano dei commenti nel loro codice per spiegare cosa fa.
I commenti possono essere utili quando altre persone guardano il tuo codice, come i compagni di squadra, i mentori e i giudici.
I commenti possono essere utili anche nel caso in cui si torni sul codice in un secondo momento e si dimentichi quali sono le sue funzioni.
Per aggiungere un commento, clicca con il tasto destro del mouse sui blocchi e seleziona "Aggiungi commento".
Successivamente, apparirà un punto interrogativo nell'angolo del blocco e potrai aggiungere del testo. Puoi visualizzare il commento cliccando sul punto interrogativo.
Suggerimento del mentore
Le migliori pratiche: I commenti sono la cosa più utile nella programmazione.
È capitato spesso che un codificatore abbia codificato qualcosa e poi sia andato a dormire, per poi tornare la mattina dopo e non avere la minima idea di cosa avesse fatto la sera prima. Scrivi sempre dei commenti!
It’s also a great way to check your knowledge, because if your coding blocks are easy to comment on then you must understand them really well! Another thing to be aware of is that <, >, =, ≤, ≥ are hard for students for the first time (and for programmers who are years into their careers). When we set a math statement to < when it should be ≤ this is called an “off by one” error and this is a problem that happens to developers with 20 years of experience 😛 It is a very popular problem so be on the lookout for that.
Il miglior tipo di debugging è quello delle paperelle di gomma! Questo è il caso in cui il tuo codice è davvero bloccato e non ha senso. Vorresti prenderti un po' di tempo per parlarne con qualcun altro per vedere se riesce a individuare il problema, ma purtroppo non c'è nessuno! Così hai una fidata paperella di gomma alla tua scrivania e spieghi il problema ad alta voce alla tua amica paperella. Devi però farlo in termini molto semplici per farglielo capire e poi sarai tu stesso a trovare il problema! Tutti i miei colleghi hanno delle paperelle di gomma sulla scrivania e lo fanno spesso!
Domande guida da porre agli studenti: Quanto tempo pensi che impieghino i codificatori esperti per debuggare i bug? Si potrebbe pensare che siano molto veloci, ma ogni grande sito ha delle pagine dedicate a vedere per quanto tempo esistono i bug(ad esempio Facebook) e mostrano anche se una delle loro pagine è inattiva/rotta e se stanno effettuando il debug (esempio Facebook).
Come fai a trovare i bug? (tanti e tanti test!) Quanti test pensi di dover fare? Quanti test dovresti far fare ad altre persone?
Come fai a sapere se hai trovato un bug? A volte capita che si passi un'infinità di tempo a cliccare su un'immagine per poi rendersi conto che il pulsante su cui si dovrebbe cliccare si trova sotto l'immagine. È un bug? Si tratta di una scelta di design fatta dal creatore dell'applicazione, che non pensa che si tratti di un bug, ma tu potresti farlo.
I consigli dei mentori sono forniti dal supporto di AmeriCorps.
SUGGERIMENTI PER IL DEBUG
NOTIFICATORI ED ETICHETTE
Il Notifier può aiutarti a capire perché il tuo codice non funziona.
Per inserire un Notifier nella tua applicazione App Inventor, trascinalo dalla palette dell'interfaccia utente.
Il modo più semplice per utilizzare il Notificatore è quello di aggiungere blocchi ShowAlert con informazioni che ti permettano di vedere se determinati blocchi sono stati eseguiti (o meno).
Oltre ai messaggi, puoi visualizzare informazioni come il valore di una variabile o la posizione di un ImageSprite.
Puoi anche aggiungere Etichette per visualizzare le informazioni correnti nella tua applicazione.
Ad esempio, potresti voler conoscere il valore di una variabile quando si verificano determinati eventi durante l'esecuzione dell'applicazione.
Puoi impostare il Label.Text su qualsiasi cosa tu voglia sapere e lo visualizzerai sulla tua applicazione.
Una volta individuato l'errore, puoi rendere l'etichetta invisibile o eliminarla del tutto dalla tua applicazione.
FALLO
Il Fallo è un altro ottimo strumento per il debug.
Mentre stai testando la tua applicazione, sia con un telefono e l'applicazione AI Companion che con l'emulatore, hai accesso a un nuovo comando, "Fallo".
Il comando è disattivato finché non ti connetti a un telefono o all'emulatore attraverso il menu Connetti.
Do it ti permette di eseguire un blocco senza dover interagire con l'applicazione stessa, in modo da poter vedere il valore corrente di una variabile o di un elemento.
Basta trascinare un blocco di variabili "get global" e fare clic con il tasto destro del mouse. Seleziona "Esegui" dal menu a tendina e il blocco di codice verrà eseguito.
Sopra il riquadro con il risultato apparirà un riquadro giallo Do It. Questo può funzionare anche per qualsiasi proprietà del componente!
Puoi usare Do It anche per modificare qualcosa nella tua app. Ad esempio, potresti voler cambiare un elemento di un elenco. Trascina il blocco per farlo e seleziona "Fallo". Non vedrai il risultato, ma l'elenco verrà aggiornato all'interno della tua app.
Puoi anche eseguire un blocco di codice esistente nella tua applicazione.
Ad esempio, in questo caso gli elementi ListView verranno aggiornati utilizzando Do It. Questo si rifletterà nell'applicazione. La ListView mostrerà i nuovi elementi impostati con il comando Do It.
DATI DEI TEST DI UTILIZZO
Se hai molte informazioni da utilizzare nella tua applicazione, può essere utile utilizzare i dati di test. I dati di prova sono un insieme di dati più semplici e piccoli che puoi utilizzare per assicurarti che la tua applicazione funzioni correttamente.
Supponiamo che tu stia realizzando un'applicazione che mostra i ristoranti nelle vicinanze. Utilizzi Google Sheets per memorizzare le informazioni sui ristoranti.
Puoi iniziare con uno o due ristoranti di prova e testare la tua applicazione per assicurarti che funzioni.
Una volta testato e funzionante, puoi aggiungere i dati completi del ristorante al tuo foglio Google.
MODIFICA DELLE PROPRIETÀ
Se stai testando la tua applicazione, puoi modificare il valore di una proprietà nel Designer mentre esegui l'applicazione e vederne gli effetti.
A volte questo può aiutare a scoprire un problema.
Ad esempio, potresti stare programmando un gioco. La posizione di uno sprite non ti sembra corretta sul telefono quando è in esecuzione.
Durante i test dal vivo, puoi
- Vai al Designer
- modifica i valori X e Y dello Sprite
- La posizione dello Sprite sullo schermo dell'applicazione in esecuzione cambierà.
Utilizzalo per verificare e comprendere le coordinate sullo schermo.
ATTIVITÀ 1: CORREGGERE IL BUG
Correzione di bug nell'app Timer
- Carica l'applicazione in App Inventor.
- Collegati all'emulatore o al dispositivo per testare l'applicazione.
- Try pressing Start without typing anything into the textbox. What happens?
- Prova a inserire 0 o un numero negativo per il numero di secondi. Cosa succede?
- Risolvi i bug usando i blocchi condizionali!
ATTIVITÀ 2: AGGIUNGI UN COMMENTO
Aggiungi un commento al tuo progetto App Inventor
Aggiungi almeno un commento alla tua app spiegando cosa fa un gruppo di blocchi. Scegli un gruppo di blocchi che ritieni sia il più difficile da capire, perché probabilmente sarebbe il più difficile da capire per qualcun altro, ad esempio un membro del team.
RIFLESSIONE
Questi consigli possono esserti utili quando inizi a codificare la tua applicazione mobile per il tuo progetto Technovation.
Ma ricorda...
REVISIONE DEI TERMINI CHIAVE
- Debugging - il processo che i programmatori utilizzano per capire perché il loro codice non funziona e risolverlo.
- Controllo della versione salvare versioni funzionanti della tua applicazione man mano che fai progressi
- Dati di test - un insieme di dati più semplici che puoi utilizzare per assicurarti che la tua applicazione funzioni correttamente.
- Commenti testo che viene incluso nel codice per spiegare cosa fa
RISORSE AGGIUNTIVE
Ecco altre risorse per il debug di App Inventor.