View Full Version : [C++] Troppe variabili globali
In un progetto, mi sono venute fuori troppe variabli globali tipo interi, iteratori, ecc. Come posso fare per ridurre lo spazio che occupano tali dichiarazioni? Altra cosa: come facico a dichiarare un array dinamico di strutture? Thanks
The3DProgrammer
27-07-2006, 13:11
In un progetto, mi sono venute fuori troppe variabli globali tipo interi, iteratori, ecc. Come posso fare per ridurre lo spazio che occupano tali dichiarazioni? Altra cosa: come facico a dichiarare un array dinamico di strutture? Thanks
ciao,
secondo me un'abbondanza di variabili globali potrebbe essere sintomo di un design troppo complesso. Ci dai qualke info in + sul tuo lavoro?
ciao,
secondo me un'abbondanza di variabili globali potrebbe essere sintomo di un design troppo complesso. Ci dai qualke info in + sul tuo lavoro?
ho fatto un programma che crea e risolve labirinti. Ho a disposizione due algoritmi di generazione del labirinto, due funzioni euristiche e 10 algoritmi di pathfinding. Il fatto è che le dichiaravo globali per fare prima, poi dicevo, tanto le sistemo! Ma non lo facevo mai, ed adesso sono troppe, circa 50 !
trallallero
27-07-2006, 13:26
ho fatto un programma che crea e risolve labirinti. Ho a disposizione due algoritmi di generazione del labirinto, due funzioni euristiche e 10 algoritmi di pathfinding. Il fatto è che le dichiaravo globali per fare prima, poi dicevo, tanto le sistemo! Ma non lo facevo mai, ed adesso sono troppe, circa 50 !
Per l'array di structs:
typedef struct
{
int c;
} X;
X *x;
x = new X(n);
dove n é il numero di elementi allocati.
Per il resto, scusa ma se non ci riesci tu che l'hai fatto il programma come fa a riuscirci uno esterno che non sa niente di quello che hai fatto ?
Ti consiglio di fermarti ogni tanto e mettere a posto il tutto, prima che diventi impossibile ;)
x = new X(n);Tra parentesi quadre:
x = new X[n];
trallallero
27-07-2006, 13:37
Tra parentesi quadre:
x = new X[n];
ops vero :doh:
in effetti non lavoro in C++ da un pó :D
solo pro*C :muro:
Per l'array di structs:
typedef struct
{
int c;
} X;
X *x;
x = new X(n);
dove n é il numero di elementi allocati.
Per il resto, scusa ma se non ci riesci tu che l'hai fatto il programma come fa a riuscirci uno esterno che non sa niente di quello che hai fatto ?
Ti consiglio di fermarti ogni tanto e mettere a posto il tutto, prima che diventi impossibile ;)
Volevo solo sapere se c'è un metodo elegante per scrivere variabili globali, anzichè elencarle una ad una.
trallallero
27-07-2006, 14:21
Volevo solo sapere se c'è un metodo elegante per scrivere variabili globali, anzichè elencarle una ad una.
non capisco :what:
che significa metodo elegante ? la variabile globale secondo me non é elegante di per se, la vedo come una "non ho alternative" ...
Puoi fare una struttura VARIABILI_GLOBALI e le metti tutte li dentro ma mi sembra ancora piú una porcata :Puke:
Marco Giunio Silano
27-07-2006, 15:05
non capisco :what:
che significa metodo elegante ? la variabile globale secondo me non é elegante di per se, la vedo come una "non ho alternative" ...
Puoi fare una struttura VARIABILI_GLOBALI e le metti tutte li dentro ma mi sembra ancora piú una porcata :Puke:
:D
il rimprovero del programmatore senior. Comunque quoto. Le globali sono della serie: "che parametri mi servono... ehm... espetta... vabbè, la butto blobale poi si vedrà". E alla fine ne hai dieci per la stessa cosa.
se ne hai troppe globali mettile locali, che vuoi da noi... :huh:
trallallero
27-07-2006, 15:26
:D
il rimprovero del programmatore senior. Comunque quoto. Le globali sono della serie: "che parametri mi servono... ehm... espetta... vabbè, la butto blobale poi si vedrà". E alla fine ne hai dieci per la stessa cosa.
Bravo! Anch'io la metto globale per vedere se funziona, temporaneamente, magari ho avuto un'idea e non mi va di perdere tempo a cercare un alternativa alla globale ...
ma appena il tutto quadra bisogna rendere la cosa pulita, ordinata e mantenibile :O
trallallero
27-07-2006, 15:27
se ne hai troppe globali mettile locali, che vuoi da noi... :huh:
sempre gentilissimo, eh :D
Marco Giunio Silano
27-07-2006, 15:33
Bravo! Anch'io la metto globale per vedere se funziona, temporaneamente, magari ho avuto un'idea e non mi va di perdere tempo a cercare un alternativa alla globale ...
ma appena il tutto quadra bisogna rendere la cosa pulita, ordinata e mantenibile :O
esatto, il difficile non è farlo funzionare il codice, ma renderlo pulito, trasportabile, snello, che usa poche risorse, poca memoria, pochi cicli... ma quando lo dicevo io mi prendevano per pazzo e mi rispondevano: "che perdita di tempo inutile, io ci metto la metà!". Già, è vero, ma quando dovevano rimetterci le mani dopo qualche mese... apriti cielo!
Volevo solo sapere se c'è un metodo elegante per scrivere variabili globali, anzichè elencarle una ad una.Non è che c'è un modo "elegante" o meno di usare le variabili globali ... dipende da cosa sono quelle variabili e dal "significato" che hanno.
Io ad esempio in Win32 sono abituato a mettere una variabile globale:
HINSTANCE g_hInstance;
impostandola nella WinMain. Dal momento che all'interno della applicazione di istanza ce n'è una sola, non vedo nulla di male a mettere questa informazione "globale" come variabile ... globale.
Se metti le variabili come globali semplicemente perché non sai come gestirle in altro modo o perché non hai voglia di strutturare meglio i tuoi dati ... e un'altra cosa e non va bene. ;)
trallallero
27-07-2006, 15:42
esatto, il difficile non è farlo funzionare il codice, ma renderlo pulito, trasportabile, snello, che usa poche risorse, poca memoria, pochi cicli... ma quando lo dicevo io mi prendevano per pazzo e mi rispondevano: "che perdita di tempo inutile, io ci metto la metà!". Già, è vero, ma quando dovevano rimetterci le mani dopo qualche mese... apriti cielo!
:)
Stessa cosa qui, solo che oltre a far tutte le variabili globali fanno pro*C di 5/6000 righe indentate alla pizza e fichi il tutto per qualche tabulato, 15 query, 2 mesi di lavoro :muro:
Ultimamente mi hanno dato un lavoro da fare, un pro*C ex novo ( :yeah: ) per la creazione di 12 tabulati diversi. 700 righe, 1 variabile globale (per il log), 1 query creata in maniera dinamica, 4 giorni di lavoro :D
trallallero
27-07-2006, 15:47
impostandola nella WinMain. Dal momento che all'interno della applicazione di istanza ce n'è una sola, non vedo nulla di male a mettere questa informazione "globale" come variabile ... globale.
Beh, si, non che per forza globale = cacca. Poi instance immagina debba essere reperibile dall'esterno, sarebbe assurdo locale. Peró, appunto, se uno le usa per pigrizia mentale per me sbaglia.
Come il goto ... io non ne parlo bene, peró col pro*C in caso di errore é molto utile ;)
Marco Giunio Silano
27-07-2006, 15:52
:)
Stessa cosa qui, solo che oltre a far tutte le variabili globali fanno pro*C di 5/6000 righe indentate alla pizza e fichi il tutto per qualche tabulato, 15 query, 2 mesi di lavoro :muro:
Ultimamente mi hanno dato un lavoro da fare, un pro*C ex novo ( :yeah: ) per la creazione di 12 tabulati diversi. 700 righe, 1 variabile globale (per il log), 1 query creata in maniera dinamica, 4 giorni di lavoro :D
eheh indentare! quando ne parli sembra una cosa da dentisti e ti risp: "tanto compila comunque". e i commenti? sembrano una bestia che ti morde le dita se li scrivi. Una volta una mi ha risposto: "tanto mica vengono compilati, a che servono?".
Nomi delle variabili del tipo: a, aa, aaa, aaaa, poi quando le trovi nel codice e chiedi "che è aaaa" nascono delle facce!
Semrba di combattere con i mulini a vento, infatti ho cambiato, basta programmazione, ora mi faccio l'analista e spacco i maroni ai programmatori! :D
Marco Giunio Silano
27-07-2006, 15:53
Beh, si, non che per forza globale = cacca. Poi instance immagina debba essere reperibile dall'esterno, sarebbe assurdo locale. Peró, appunto, se uno le usa per pigrizia mentale per me sbaglia.
Come il goto ... io non ne parlo bene, peró col pro*C in caso di errore é molto utile ;)
quando ero un programmatore junior e usavo il goto erano bacchettate sulle dita. ora lo odio, esci dalla programmazioen strutturata, non è bello e nn è da usare se non in casi estremi.
trallallero
27-07-2006, 16:02
eheh indentare! quando ne parli sembra una cosa da dentisti e ti risp: "tanto compila comunque". e i commenti? sembrano una bestia che ti morde le dita se li scrivi. Una volta una mi ha risposto: "tanto mica vengono compilati, a che servono?".
Nomi delle variabili del tipo: a, aa, aaa, aaaa, poi quando le trovi nel codice e chiedi "che è aaaa" nascono delle facce!
Semrba di combattere con i mulini a vento, infatti ho cambiato, basta programmazione, ora mi faccio l'analista e spacco i maroni ai programmatori! :D
beato te! io sono eterno consulente ed ai consulenti l'analisi non la fanno fare :cry:
per il discorso indentazione ho fatto un indentatore Sql talmente mi ero rotto di modificare quei pro*C ... anzi, domani lo metto qui a disposizione! Diffondo la mania all'indentazione! :D
a domani ... ops .. é vero! i programmatori vanno a casa alle 17 gli analisti alle 19 :ciapet:
Marco Giunio Silano
27-07-2006, 16:06
beato te! io sono eterno consulente ed ai consulenti l'analisi non la fanno fare :cry:
per il discorso indentazione ho fatto un indentatore Sql talmente mi ero rotto di modificare quei pro*C ... anzi, domani lo metto qui a disposizione! Diffondo la mania all'indentazione! :D
a domani ... ops .. é vero! i programmatori vanno a casa alle 17 gli analisti alle 19 :ciapet:
grrr :muro: alle 19, già, ma entrano alle 10 :D
Il fatto è proprio questo: le mettevo globali per fare delle prove, tanto ci pensavo dopo dicevo. E intanto si accumulavano. Adesso ne ho una cinquantina, non sono un bel vedere, ma ormai non posso farci nulla. Ho pensato di metterle nell'header come public ed inizializzarle quando mi servono, ma non cambia nulla, trasferisco solo il problema. Pero' l'header magari il prof non lo guarda :D
trallallero
28-07-2006, 07:05
Il fatto è proprio questo: le mettevo globali per fare delle prove, tanto ci pensavo dopo dicevo. E intanto si accumulavano. Adesso ne ho una cinquantina, non sono un bel vedere, ma ormai non posso farci nulla. Ho pensato di metterle nell'header come public ed inizializzarle quando mi servono, ma non cambia nulla, trasferisco solo il problema. Pero' l'header magari il prof non lo guarda :D
Un pó come nascondere la polvere sotto il tappeto :D
Marco Giunio Silano
28-07-2006, 07:45
Un pó come nascondere la polvere sotto il tappeto :D
LOL :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.