Copy And Swap Idiom
Pagina 1 di 2
In materia di programmazione, il termine eccezione individua un insieme di eventi ben preciso e importante da gestire. Si tratta di tutti quei casi in cui all'interno di un programma in esecuzione si verifica un errore non rilevabile in fase di compilazione.
Tali situazioni possono essere dovute, ad esempio, a un input errato (o non conforme alle richieste) da parte dell'utente oppure, caso forse più insidioso, allo stato del computer nel momento dell'esecuzione del programma. Viene generata infatti un'eccezione, ad esempio, se si richiede di allocare un'area di memoria e questo spazio non è disponibile.
Per una programmazione sicura ed efficiente, pertanto, è necessario gestire le eccezioni. Si tratta, in altre parole, di individuare i blocchi di codice per cui potrebbero verificarsi tali situazioni e prevedere opportune contromisure per evitare, anche in quel caso, un crash del programma.
Per quanto riguarda in particolare il linguaggio C++, tra i più usati in assoluto, è stato sviluppato anche un particolare idiom, che si potrebbe forse tradurre con "dialetto" (ovvero una versione particolare del linguaggio) in grado di garantire proprio una migliore gestione delle eccezioni, in particolare per quanto riguarda gli operatori di assegnazione. Si tratta del Copy And Swap Idiom.
Struttura
In sostanza, una delle tipologie di istruzione che tende a creare maggiori problemi per quanto riguarda la gestione delle eccezioni è rappresentata dalle assegnazioni. Si tratta, tra l'altro, di istruzioni utilizzate con grande frequenza.
Si parla infatti di assegnazione ogni volta che, per l'appunto, si assegna il valore di una variabile. Nel caso più significativo (e molto frequente) ovvero nel caso in cui si tratta di una variabile allocata dinamicamente (e dunque, si può dire, in grado di adattarsi alle esigenze dell'utente durante l'esecuzione del programma), l'assegnazione si compone di due fasi elementari.
Prima di tutto è necessario deallocare, ovvero liberare, la risorsa correntemente in uso (ovvero i dati correnti) e in seguito allocare la nuova risorsa (i nuovi dati assegnati).
Se però, una volta liberata la risorsa, per un qualche motivo legato alla particolare situazione in cui viene eseguito il programma, non si è in grado di ottenere la nuova risorsa, il programma stesso si trova in uno stato non consistente. Si trova cioè in uno stato non previsto, da cui non è possibile uscire se non con un'interruzione imprevista dell'esecuzione.
Tramite il dialetto Copy And Swap Idiom, è possibile premettere alla richiesta della risorsa la verifica che tale risorsa sia disponibile, dunque questo tipo di eccezione viene gestita efficacemente, ad esempio stampando un messaggio d'errore del tipo "Risorsa non disponibile" e potendo continuare poi l'esecuzione del programma. Valutiamo in che modo sia possibile tradurre in codice tale procedura.







