Ricordo che la dichiarazione in se stessa non crea effettivamente l'oggetto o la variabile in memoria. L'effettiva allocazione deve essere fatta con NEW, per quanto riguarda gli array e gli oggetti, mentre per le variabili di base (es. Integer) questo non è necessario, anche se è opportuno impostare un valore di default, onde evitare di trovarsi inizialmente con una variabile settata a caso.
Tutto questo è valido, sia per quanto riguarda i moduli (che ricordo in Gambas sono in pratica degli oggetti statici, ma sempre oggetti), sia per gli oggetti e classi in generale. Il fatto è che con le classi hai appositi metodi per l'inizializzazione (vedi _new() o il Form_Open()), mentre per i moduli non ci sono; questo comporta la necessità di creare una logica di inizializzazione delle variabili (sia globali che private), altrimenti si corre il rischi di perder il controllo sull'applicazione.
Riguardo all'utilizzo massivo di moduli e di variabili publiche globali, ho sempre molti dubbi, causati dal fatto che sono sempre di difficile controllo (dato che sono accedute da tutti), e poi indicano la difficoltà di impostare una logica più orientata agli oggetti, come è in gambas.
Il mio consiglio è di capire bene cosa si vuol fare, onde evitare poi di imbattersi in gravi problemi di funzionalità e lettura dei codice, che diventano difficilmente recuperabili, e spesso comportano la completa ristrutturazione e riscrittura di un'intera applicazione.
Perdonatemi, non volevo fare il maestro, ma dato che siamo qui per imparare tutti, io compreso, mi pareva giusto cercare di contribuire alla conoscenza di questo bel linguaggio, e di aiutare quelli che stanno iniziando ora, fornendo tutto quello che scoperto, e scopro, utilizzandolo.
Ciao