akiross nn conosco le tue esperienza di programmazione. A me è capitata una situazione molto banale: avevo creato un dato astratto per un progetto ed avevo gestito il tutto con un paio di variabili globali. Di quell'oggetto doveva essercene una sola istanza, quindi era perfetto.
Quando poi mi è stato chiesto di farne un altro, ADT, in cui quindi fosse possibile solo in fase di run time sapere il numero di istanze ecco che ho dovuto rimettere mano a tutto il codice per sistemare le singole funzioni in modo che tramite puntatori e doppi puntatori si passassero gli oggetti.
Ed è stata una bella smaronata che mi sarei potuto evitare se la prima volta avessi evitato le globali.
Ora ogni volta che mi serve...tac includo il mio file e sono a posto.
Il file è piu pulito, c'è indipendenza funzionale e quindi posso esportare anche singole funzioni in altri progetti senza dovermi portar dietro globali o altre funzioni che le manipolino.
Non è un obbligo non utilizzare le globali. Un po come nessuno ti obbliga a non scrivere
return a(), b(), c(), d();.
Tutto il codice che scrivi con le globali puoi farlo anche senza e con notevoli benefici.
p.s. in XP proprio perche cambi di requisiti (e quindi nel progetto) sono all'ordine del giorno immagino che l'utilizzo di globali sia alquanto sconsigliato, onde nn dover riscrivere tutto ogni volta.