Ho riscontrato alcuni errori che sono emersi in una recente app Web che ho creato e che sono stati corretti con maggiore diligenza nelle variabili di ambito locale. I problemi si sono verificati "a volte" come in molto raramente. Questo mi porta a credere che le variabili possano vivere all'interno della memoria dell'applicazione server per un periodo di tempo al di fuori di una singola richiesta. (Non sto parlando di variabili applicative, solo le tue variabili normali.)
Esempio:
function functiona(){
obj = initMyObject();
a = obj.functionb();
b = obj.functionc();
}
/* Functionb and FunctionC live in a component initMyObject */
functionb(){
c = queryObject;
return c;
}
functionc(){
c = queryObject;
return c;
}
Questo è solo un esempio, ma nel mio linguaggio di programmazione (ColdFusion), credo che var c sia una variabile a livello di componente. Ma ho avuto cose in cui c'era un errore in functionc perché la variabile c non conteneva i dati che avrebbe dovuto a quel punto, forse perché era variabile c da functionb in memoria.
La mia domanda è, come succede "a volte". È un caso in cui la variabile non viene raccolta in modo sufficientemente rapido, ma solo in alcuni casi. Se si tratta di un caso di due utenti che accedono alla stessa pagina e nella variabile di memoria c viene fisicamente utilizzato per due persone diverse in momenti simili? In che modo errori come questo si verificano "a volte".
Non ho bisogno di sapere l'importanza di esaminare le cose correttamente, ho capito. Ma mi sento con una migliore comprensione di come alcuni di questi errori si verificano posso meglio fare il debug delle cose quando accadono.