Possiamo pensare ad una variabile come ad un contenitore, con una determinata etichetta. L'etichetta corrisponde al nome della variabile stessa, ovvero ciò che ci permette di identificare il contenitore, mentre il contenuto sono ovviamente i dati rappresentati da quella variabile, che possono essere classificati secondo il formato, ad esempio intero, double, booleano.
Il processo per poter usare una variabile consiste essenzialmente in due fasi:
- dichiarazione della variabile
- assegnazione di un valore alla variabile
Nonostante alcuni linguaggi semplifichino il processo a tal punto da farlosembrare unico, le due cose sono sostanzialmente molto differenti.
Nella prima fase si istruisce l'esecutore del programma, nel caso di ASP unwebserver come ad esempio IIS, comunicandogli di riservare un certo quantitativodi spazio nella memoria alla variabile in questione.
ASP gestisce solo variabili di tipo variant per cui il meccanismo di allocazione è decisamentepiù semplificato rispetto ad altri linguaggi di programmazione più complessiche gestiscono invece diversi tipi di dati come float, double, object ed altriancora.
Nella seconda fase, che può corrispondere ad un periodo temporale immediatamente successivo alla dichiarazione o nettamente posticipato, allo spazio riservato per la variabile viene assegnato un valore. Si dice quindi che la variabile viene valorizzata.
Esistono linguaggi che obbligano la dichiarazione di variabili, altri che non la consentono in modo esplicito. ASP è in grado di lavorare sia con variabili implicite , ovvero non dichiarate, sia con variabili esplicite .
Nel caso di variabili implicite ASP provvederà autonomamente a rilevare la presenza di una nuova variabile nel momento in cui viene valorizzata e ad attribuirle lo spazio necessario in memoria. Nel caso in cui si tenti invece di usare una variabile non dichiarata allora tale variabile risulterà valorizzata con un valore Null e l'esecuzione si comporterà di conseguenza.
Dichiarazione di una variabile
Per dichiarare in ASP una variabile si usa l'istruzione Dim seguitadal nome della variabile. Nel caso la variabile sia invece una costante si dichiaracon l'istruzione Const seguita dal nome e dalla operazionedi valorizzazione.
Dim variabile
Const costante = valore
La differenza tra variabile e costante è abbastanza intuitiva.
Una variabile è un contenitore che può cambiare infinite voltecontenuto, ovvero è possibile valorizzare la variabile più voltecon valori diversi, con alcune limitazioni però sul formato del valoreche in ASP sono molto più flessibili rispetto ad altri linguaggi.
Una costante invece assume un valore attribuito inizialmente e che non è possibilemodificare nel tempo e durante l'elaborazione.
Forzare la dichiarazione di una variabile
Abbiamo anticipato prima che ASP è in grado di lavorare con variabilidichiarate e con variabili non dichiarate.
Possiamo quindi decidere di dichiararne solo alcune, tutte o nessuna. Esiste tuttavia una istruzione in grado di forzare il programmatore a dichiarareogni variabile e si chiama Option Explicit .
Questo comando va messo come prima istruzione della pagina, una volta sola, precedutaunicamente dalla dichiarazione del linguaggio se presente.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit
' il codice
%>
In questo caso se si tenterà di usare una variabile non dichiarataverrà restituito un errore tipo
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined: 'nomevariabile'
/percorso_del_file/pagina.asp, line 392
Dove dichiarare la variabile?
La posizione dove viene dichiarata una variabile non è vincolanteal fine dell'esecuzione , anche se la dichiarazione è successivaal suo utilizzo.
Esistono infatti dei processi prioritari nell'esecuzione di una pagina ASP;uno di questo è la dichiarazione delle variabili. Significa quindi cheil webserver come prima cosa legge l'intero codice, esegue il comando di dichiarazionedi tutte le variabili e poi procede con l'esecuzione.
L'unico vincolo è quindi quello logico. Non ha infatti molto sensodichiarare le variabili dopo averle già usate poiché si complicala lettura del codice stesso.
Una convenzione abbastanza diffusa è quella di dichiarare ad iniziopagina le variabili che verranno utilizzate più volte ed in punti differentinel codice stesso e dichiarare invece poco prima dell'uso variabili il cui scopo è limitatoad una piccola porzione di codice.
Nel caso di funzioni si usa invece dichiarare le variabili locali dentro alblocco della funzione stessa. Saranno così solo visibili nell'ambitodell'esecuzione della procedura e non appena terminata la funzione lo spazioda loro occupato verrà disallocato.
Perchè forzare la dichiarazione di una variabile?
La domanda più frequente è proprio questa... perché autoobbligarsi a dichiarare una variabile quando potremmo tranquillamente lasciarfare al webserver risparmiandoci quindi una possibile complicazione?
Le risposte sono diverse e coprono diversi ambiti, da quello di esecuzionea quello logico.
Velocità di elaborazione
Il primo motivo è che una elaborazione con variabili dichiarateviene eseguita più velocemente di una stessa elaborazionecon variabili implicite. La motivazione è molto semplice.
Nel caso di variabili implicite il webserver dovrà andare a controllarese la variabile in questione è già stata usata. In caso affermativoallora procederà, in caso alternativo dovrà invece provvederea dichiararla e valorizzarla con valore convenzionale null.
Questo processo, nonostante sia pressoché impercettibile dall'uomopoiché eseguito da un elaboratore in grado di completare calcoli complessia velocità molto ridotte, è tuttavia da considerare in un ambitomolto più ampio di ottimizzazione del codice.
Forzare la dichiarazione delle variabili è quindi una garanziaverso il webserver . Gli stiamo assicurando che quella pagina avrà solovariabili dichiarate (altrimenti non potrebbe essere eseguita) e lui processerà quindiquelle segnalate senza dover controllare ogni volta ciascuna assegnazione.
Sicurezza del codice
Ipotizziamo di avere un codice molto complesso che si sviluppa su più paginecon diverse funzioni e procedure, ad esempio per gestire una attività dicommercio on-line.
Potrebbe capitare di avere una elaborazione che calcola uno sconto su un determinatoquantitativo di prodotti e che poi viene ovviamente sottratta al valore finaledell'acquisto.
Ipotizziamo che la variabile dello sconto si chiami appunto dblSconto, dovesconto è il nome e dbl un prefisso convenzionale per le variabili convalori double, e per sbaglio in una qualche parte del codice noi andremo a richiamarlacome intSconto.
Ovviamente il codice non funzionerà correttamente in alcunesituazioni e potrebbe risultare molto complesso capire dove si troval'errore, soprattutto perché non procedurale (il programma funziona,non genera errori di codice) ma logico (funziona, ma non come avremmo voluto).
Se avessimo invece forzato la dichiarazione di variabili non appena lanciata l'esecuzione della pagina il webserver ci avrebbe immediatamente comunicato un errore per la variabile intSconto non dichiarata e avremmo quindi potuto facilmente individuare e correggere l'errore.
Nonostante queste situazioni possano sembrare molto remote rispetto all'attività quotidiana sono invece assai frequenti.
È quindi sempre consigliabile eseguire la dichiarazione delle variabili, poiché una volta abituati diventerà quasi automatico e permetterà anche di passare a linguaggi diversi da ASP in modo molto più naturale, oltre al notevole vantaggio di migliorare sotto diversi punti di vista il codice delle pagine.