In generale le variabili globali sono male. Il principio sottostante per cui sono malvagi è che vuoi minimizzare le interconnessioni nel tuo pacchetto. Queste interconnessioni spesso fanno sì che le funzioni abbiano effetti collaterali, ovvero dipende non solo dagli argomenti di input, dal risultato, ma anche dal valore di alcune variabili globali. Soprattutto quando cresce il numero di funzioni, questo può essere difficile da ottenere correttamente e l'inferno da eseguire il debug.
Per le variabili globali in R vedere questo SO post.
Modifica in risposta al tuo commento: Un'alternativa potrebbe essere quella di passare semplicemente le informazioni necessarie alle funzioni che ne hanno bisogno. È possibile creare un nuovo oggetto che contiene queste informazioni:
token_information = list(token1 = "087091287129387",
token2 = "UA2329723")
e richiedono tutte le funzioni che hanno bisogno queste informazioni per avere come argomento:
do_stuff = function(arg1, arg2, token)
do_stuff(arg1, arg2, token = token_information)
In questo modo è chiaro dal codice che le informazioni sui token sono necessarie nella funzione e puoi eseguire il debug della funzione da solo. Inoltre, la funzione non ha effetti collaterali, poiché il suo comportamento è completamente determinato dai suoi argomenti di input. Uno script utente tipico sarebbe simile:
token_info = create_token(token1, token2)
do_stuff(arg1, arg2, token_info)
Spero che questo rende le cose più chiare.
fonte
2012-09-26 09:29:50
Potresti approfondire la tua situazione specifica? Allora potremmo aiutarti a trovare alternative, preferibilmente ... –
http://stackoverflow.com/questions/5526322/examples-of-the-perils-of-globals-in-r-and-stata –