martedì 21 luglio 2015

Non utilizzare le variabili globali

Le variabili globali (global) sono una tentazione troppo forte per chi viene da altri linguaggi di programmazione, ma sono anche un elemento di cattiva programmazione in Livecode.
Le variabili globali sono variabili visibili da tutti gli elementi del programma, per dichiararle basta:


global miavariabile

ma sono un male, e vediamo il motivo. Di solito si usano per avere un valore visibile da più funzioni, messaggi e altri elementi del programma.
Poichè sono accessibili da ogni parte del programma, è praticamente impossibile capire quale parte del programma stia modificandone il valore, anche un semplice errore di battitura in qualche punto del programma potrebbe creare enormi problemi.
Le variabili globali hanno anche problemi di sicurezza, sempre perchè è difficile anche sapere dove e se ci sono, se più programmatori mettono mano al programma può essere complicato risalire a tutte le varibili globali.
Chi usa variabili globali tende a creare un programma monolitico, invece un buon programma dovrebbe essere modulare, in modo da poter aggiungere e togliere funzionalità all'occorrenza.
Per ultimo non dimentichiamo che non potendo recuperare facilmente la lista delle variabili globali mentre si scrive il codice, si rischia di creare situazioni pericoloso, dove lo stesso nome per diversi tipi di variabili senza accorgersene. Vi ricordo che le variabili normali dentro un messaggio, sono eliminate alla fine del messaggio.
In un linguaggio come livecode ogni variabile dovrebbe essere contenuto in un controllo.
Per fare questo basta utilizzare le custom property:


set miavariabile of button 1 to "Luigi"

In questo modo è sempre possibile recuperare il valore della variabile utilizzando o il property inspector, o message box.



Possiamo anche cambiarla facilmente, avere la lista delle variabili di ogni controllo. Anche le custom properties sono visibili da tutti i punti del programma, ma dovendo scrivere tutto il percorso, si evitano confusioni di variabili per errori di battitura, il programma è realmente modulare, e eliminando un controllo, si vedono immediatamente gli effetti se quelle variabili erano legate anche a qualche altra parte di del programma, aumentando notevolmente la sicurezza.