Perche' normalmente le variabili globali sono spesso associate ad un esempio di brutta programmazione?
Parto col dire che non mi piacciono, perche' spesso creano confusione sia al lettore (ad esempio quando leggo dei codici che usano variabili globali devo andarmi a cercare dove vengono extern-ate...) sia al programmatore (perche' spesso -soprattutto quando hanno nomi "comuni"- succede che vengono erroneamente usate in qualche funzione dove non servono, o in qualche funzione vengono create variabili con lo stesso nome, o a volte non si capisce bene quale funzione gli associ/cancelli il valore)...
Pero' spesso sono troppo comode, soprattutto per creare funzioni che possono ritornare piu' valori oppure uno singolo a seconda di qualche macro, come nel caso del codice d'errore delle funzioni posix che viene scritto nella variabile globale errno se e' incluso <errno.h>.... Oppure sono comode quando c'e' bisogno di passare a qualche funzione centinaia di variabili che non possono venire racchiuse in un'unica struttura dato che non sono collegate tra loro...
Voi siete contrari o appoggiate l'uso delle variabili globali? e in quali casi le usereste/usate o ne fareste/fate a meno?