In quali circostanze ritieni che sia giustificato utilizzare esternamente (cioè variabili globali)?
Ad esempio, in un sistema con 1 stato dato alla volta, sarebbe opportuno memorizzare questo stato in un extern?
Potrebbe essere necessaria una variabile globale extern
, se:
un elemento dello stato del programma (cioè il contenuto della variabile globale) deve essere condiviso, AND
non è possibile gestire questi elementi come membro di una classe statica (preferibilmente privato o protetto), AND
non è possibile permettersi il sovraccarico dell'incapsulamento in un singleton, E
non c'è un modo semplice per rendere gli oggetti / le funzioni che si occupano di quello stato di conoscersi e comunicare direttamente invece di usare il globale, AND
non è desiderabile raggruppare le classi / funzioni che hanno bisogno di questo stato nella stessa unità di compilazione (il che potrebbe almeno ridurre il rischio di effetti collaterali imprevisti, rendendo tale variabile globale static
e quindi meno visibile ).
In alternativa, potresti avere bisogno di una variabile globale extern volatile
per gli stessi motivi, ma se si tratta dello stato del sistema (ad esempio, la posizione fissa utilizzata dall'hardware)
Leggi altre domande sui tag globals programming-practices c++ variables