variabili globali (nient'affatto una questione di stile!)
Attenzione attenzione!!!
Nel mio post sulle procedure/funzioni ho fatto ricorso a variabili globali (i e j) usandole all'interno delle funzioni. Il motivo era quello di spiegare il modo con cui vengono gestite le variabili (globali, locali, passate per riferimento e passate per valore) all'interno delle funzioni, e in particolare quali sono le azioni che si ripercuotono all'interno del programma principale e quali invece hanno effetto solo all'interno (e per la sola durata) della funzione.
Di fatto, però, l'uso di variabili globali all'interno delle funzioni è fortemente sconsigliato. Di più, per quanto riguarda il corso, tale pratica è da considerarsi BANDITA, esattamente come l'uso di costrutti non-strutturati come il goto.
Il motivo è che la funzione, per sua stessa natura, deve essere il più possibile indipendente dal contesto o, meglio, deve potersi adattare a qualsiasi contesto. Per questo, tutto ciò di cui una funzione ha bisogno deve essere creato all'interno della funzione stessa (se il prosieguo del programma principale non ne ha più bisogno) oppure passato come parametro (se deve esserci una qualche comunicazione fra programma principale e funzione, sia essa in un senso, nell'altro o in entrambi).
Nel mio post sulle procedure/funzioni ho fatto ricorso a variabili globali (i e j) usandole all'interno delle funzioni. Il motivo era quello di spiegare il modo con cui vengono gestite le variabili (globali, locali, passate per riferimento e passate per valore) all'interno delle funzioni, e in particolare quali sono le azioni che si ripercuotono all'interno del programma principale e quali invece hanno effetto solo all'interno (e per la sola durata) della funzione.
Di fatto, però, l'uso di variabili globali all'interno delle funzioni è fortemente sconsigliato. Di più, per quanto riguarda il corso, tale pratica è da considerarsi BANDITA, esattamente come l'uso di costrutti non-strutturati come il goto.
Il motivo è che la funzione, per sua stessa natura, deve essere il più possibile indipendente dal contesto o, meglio, deve potersi adattare a qualsiasi contesto. Per questo, tutto ciò di cui una funzione ha bisogno deve essere creato all'interno della funzione stessa (se il prosieguo del programma principale non ne ha più bisogno) oppure passato come parametro (se deve esserci una qualche comunicazione fra programma principale e funzione, sia essa in un senso, nell'altro o in entrambi).
A questo proposito, è forse il caso di anticipare in questo post dei quaderni, una discussione più dettagliata sul modo ottimale con cui passare parametri a una funzione.
Nessun commento:
Posta un commento