HighDots Forums  

Evitare variabili globali

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss Evitare variabili globali in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Ugo
 
Posts: n/a

Default Evitare variabili globali - 01-22-2008 , 06:22 PM






Ciao a tutti,

mi sono definito una classe che istanzio 3 volte in una pagina web,
ho la necessita' di richiamare i riferimenti degli oggetti in punti
diversi del codice,
cosa mi consigliate come alternativa alle variabili globali?

Ciao

Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: Evitare variabili globali - 01-23-2008 , 03:12 AM






On Wed, 23 Jan 2008 01:22:35 +0100, Ugo wrote:

Quote:
mi sono definito una classe che istanzio 3 volte in una pagina web,
ho la necessita' di richiamare i riferimenti degli oggetti in punti
diversi del codice,
cosa mi consigliate come alternativa alle variabili globali?
Di dare una *buona* lettura ai Design Pattern che ti ho già
consigliato a suo tempo.

Queste sono domande alle quali puoi rispondere benissimo da
solo, dato che i DP nascono per rispondere a questo tipo di
esigenze; e per evitare che gli sviluppatori s'inventino la
ruota ogni sacrosanta volta.

Nello specifico, andrebbe visto la tipologia della "classe"
(ricordati che JS non ha classi) in questione, il perché si
istanzia tre volte (sempre e solo tre?) e in che contesto.

Avendo bene in mente lo scopo che vuoi raggiungere e questi
dettagli, puoi cercare i pattern più idonei al problema.

Ma te lo dico subito.. non è mia intenzione riaffrontare di
nuovo l'argomento, in quanto l'ultimo thread che si è avuto
è stato a mio avviso abbastanza esaustivo, e si è protratto
per un bel po'. Quello che avevo da suggerirti, te l'ho già
suggerito all'epoca: adesso sta a te.

--
~ Se potete leggere questo, la mia donna è caduta.
(Letta sul retro di una maglietta di un motociclista)



Reply With Quote
  #3  
Old   
ZER0
 
Posts: n/a

Default [OT] Re: Evitare variabili globali (was: Evitare variabili globali) - 01-23-2008 , 03:30 AM



On Wed, 23 Jan 2008 10:16:27 +0100, Sembro la carta wrote:

Quote:
~ Se potete leggere questo, la mia donna è caduta.
(Letta sul retro di una maglietta di un motociclista)

L'originale: "If you can read this, the bitch has gone!"
Non è proprio lo stesso, ne converrai ;-)))
Ne convengo, ne convengo.

Quote:
Ma adesso dimmi: l'allienamento in giustificato nel post precedente è
stato ottenuto senza utilizzare doppie spaziature;
E' da un po' e via che lo fo'.
Ovviamente è più manifesto laddove il testo non è interrotto da
quoting.

Quote:
si tratta di un caso
o mi stai diventandomi completamente paranoico? ;-DDD
Oddio: "paranoico", proprio non vedo cosa c'azzecchi. Piuttosto
"con qualche turba mentale", dai.
Tornando un attimo seri: alla fin fine è un po' come mettersi a
fare il "Sudoku". E poi, non ti ricordi tutti quei discorsi sul
codice che deve essere bello da vedere oltre che funzionale? In
pratica il concetto di fondo è lo stesso anche qua. Ovviamente,
con le dovute differenze del caso.

--
~ Se potete leggere questo, la mia donna è caduta.
(Letta sul retro di una maglietta di un motociclista)



Reply With Quote
  #4  
Old   
Ugo
 
Posts: n/a

Default Re: Evitare variabili globali - 01-23-2008 , 05:57 PM



Quote:
mi sono definito una classe che istanzio 3 volte in una pagina web,
ho la necessita' di richiamare i riferimenti degli oggetti in punti
diversi del codice,
cosa mi consigliate come alternativa alle variabili globali?

Di dare una *buona* lettura ai Design Pattern che ti ho già
consigliato a suo tempo.
L'avevo fatto, e proprio per questo che chiedevo aiuto, perchè ce n'è una
miriade...

Quote:
Queste sono domande alle quali puoi rispondere benissimo da
solo, dato che i DP nascono per rispondere a questo tipo di
esigenze; e per evitare che gli sviluppatori s'inventino la
ruota ogni sacrosanta volta.
Ho proprio l'impressione di averlo fatto
Infatti in un 3d precedente a questo
<1q8fzuhr0ex09$.1okm3a0y4zfhc.dlg (AT) 40tude (DOT) net>
ho provato a dare una proposta di soluzione che ricorda un po' un "Lazy
initialization"

Quote:
Avendo bene in mente lo scopo che vuoi raggiungere e questi
dettagli, puoi cercare i pattern più idonei al problema.
Allora ho pensato di fare così:
per una sorta di retrocompatibilità, ho lasciato il mio oggetto iniziale
invariato e poi mi sono creato un'altro bel oggettino singleton che funge
da raccoglitore con una lazy initialization insieme ad un factory method.

In definitiva io associo facoltativamente una stringa che identifica
l'istanza del mio oggetto e la richiamo/creo attraverso un metodo
dell'altro oggetto raccoglitore:

var o = ObjList.getInstance( null, 'ist1' );

direi che comunque sia non dovrebbe essere malaccio, anzi credo di aver
fatto un buon lavoro - chiaramente verro' smentito subito, in caso
contrario credo proprio che adotterò questo metodo...

ne posto una versione riassunta:

function Obj( params )
{
//...
}
//...
var ObjList = (function()
{
var istancesList = { };

return new function( )
{
// this.constructor = null;

this.getInstance = function( params, istanceId )
{
var instance = null;

if( ! layerObj )
{
alert( 'Attenzione! Parametro non valido...' );
}
else
{
if( typeof istanceId == 'string' ||
typeof istanceId == 'undefined' )
{
if( typeof istanceId != 'undefined' &&
typeof istancesList[istanceId] == 'object' )
{
instance = istancesList[istanceId];
}
else
{
instance = new Obj( layerObj );
instance.constructor = null;
if( typeof istanceId == 'string' && istanceId )
istancesList[istanceId] = instance;
}
else
{
alert( "Attenzione! Parametro non valido..." );
}
}

return instance;
}
}
})( );


Che ne dici?


Reply With Quote
  #5  
Old   
ZER0
 
Posts: n/a

Default Re: Evitare variabili globali - 01-24-2008 , 03:34 AM



On Thu, 24 Jan 2008 00:57:34 +0100, Ugo wrote:

Quote:
Di dare una *buona* lettura ai Design Pattern che ti ho già
consigliato a suo tempo.

L'avevo fatto, e proprio per questo che chiedevo aiuto, perchè ce n'è una
miriade...
L'importante sono quelli fondamentali (della GoF), più qualcun altro.
A conti fatti siamo sull'ordine della trentina, non di più. Si devono
conoscere tutti, e non mi sembra uno sforzo disumano studiarseli. Non
li userai certo tutti in questa casistica, ma prima o poi ti capiterà
sicuramente un'altra problematica nella quale i DP ti serviranno. Non
è bene essere già pronti?
E al giorno d'oggi non puoi fare informatica senza conoscerli (certo,
puoi sempre reinventarti la ruota, con i problemi del caso e non solo
per te ma anche per chi mai dovesse metter mano al tuo codice).

Quote:
Queste sono domande alle quali puoi rispondere benissimo da
solo, dato che i DP nascono per rispondere a questo tipo di
esigenze; e per evitare che gli sviluppatori s'inventino la
ruota ogni sacrosanta volta.

Ho proprio l'impressione di averlo fatto
Impressione errata, alla luce di quanto dici:

Quote:
Infatti in un 3d precedente a questo
1q8fzuhr0ex09$.1okm3a0y4zfhc.dlg (AT) 40tude (DOT) net
ho provato a dare una proposta di soluzione che ricorda un po' un "Lazy
initialization"
Primo, un DP s'implementa. Non si puo' dire "ho fatto qualcosa che un
po' ricorda il Lazy Initialization". O lo usi, il Lazy, o non lo usi.
Se lo stravolgi, o ci fai la tua (per)versione personale, bene che ti
vada stai facendo quello che fa la Microsoft con gli standard web.

Secondo, derivato dal primo, non è proprio il Lazy Initialization.

Per questo ti suggerisco nuovamente di dare una *buona* lettura ai DP
e vedrai che a questi dubbi ti risponderai da solo.

Quote:
Allora ho pensato di fare così:

var o = ObjList.getInstance( null, 'ist1' );
[..]
Che ne dici?
Che indubbiamente rispetto all'altro post le cose son cambiate ma non
stai ugualmente seguendo i DP a modo, né quello che ti ho detto.
E come ti ho già scritto non è mia intenzione riaffrontare nuovamente
l'argomento per i motivi citati nel precedente post. Quindi se tu sei
soddisfatto così, ben venga, il codice è tuo. Ma non tirarmi addentro
la questione.

--
~ Se potete leggere questo, la mia donna è caduta.
(Letta sul retro di una maglietta di un motociclista)



Reply With Quote
  #6  
Old   
Ugo
 
Posts: n/a

Default Re: Evitare variabili globali - 01-24-2008 , 04:30 PM



Quote:
Di dare una *buona* lettura ai Design Pattern che ti ho già
consigliato a suo tempo.

L'avevo fatto, e proprio per questo che chiedevo aiuto, perchè ce n'è una
miriade...

L'importante sono quelli fondamentali (della GoF), più qualcun altro.
A conti fatti siamo sull'ordine della trentina, non di più.
e stica...

Quote:
Si devono
conoscere tutti, e non mi sembra uno sforzo disumano studiarseli.
beh, forse per te :P
tra l'altro che quel problemino tempo

Quote:
Non
li userai certo tutti in questa casistica, ma prima o poi ti capiterà
sicuramente un'altra problematica nella quale i DP ti serviranno.
eh già...

Quote:
Non è bene essere già pronti?
ma sarei anche d'accordot con te, piano piano

Quote:
E al giorno d'oggi non puoi fare informatica senza conoscerli
mah, magari al giorno di domani, perchè al giorno d'oggi sto vedendo cose
che se prima iniziavo a preoccuparmi che io non fossi sufficientemente
aggiornato e/o avessi un approccio poco oop (e quel poco sbagliato), beh
ora ho smesso di esserlo e faccio sogni tranquilli
(Cmq per sicurezza cerco sempre una continua crescita)

Quote:
Per questo ti suggerisco nuovamente di dare una *buona* lettura ai DP
e vedrai che a questi dubbi ti risponderai da solo.
uno dei problemi che ho avuto è stato che una buona lettura non ho saputo
dove farla...
poi, non demoralizzarmi, pero' eviterei di dirmi frasi tipo "ti risponderai
da solo" perchè per un motivo/problema o l'altro ho dimostrato più volte di
non riuscirci

Quote:
Allora ho pensato di fare così:

var o = ObjList.getInstance( null, 'ist1' );
[..]
Che ne dici?

Che indubbiamente rispetto all'altro post le cose son cambiate ma non
stai ugualmente seguendo i DP a modo, né quello che ti ho detto.

eh, lo sapevo

Vabbe', ciao


Reply With Quote
  #7  
Old   
ZER0
 
Posts: n/a

Default [OT] Re: Evitare variabili globali (was: Evitare variabili globali) - 01-25-2008 , 03:17 AM



On Thu, 24 Jan 2008 23:30:32 +0100, Ugo wrote:

Quote:
L'avevo fatto, e proprio per questo che chiedevo aiuto, perchè ce n'è una
miriade...

L'importante sono quelli fondamentali (della GoF), più qualcun altro.
A conti fatti siamo sull'ordine della trentina, non di più.

e stica...
"miriade" dalle mie parti vuol dire un numero esageratamente grande,
tant'è che l'etimologia deriva da "diecimila" se non erro. Se per te
una trentina è equivalente a un "numero esageratamente grande", beh,
abbiamo qualche problemuccio di proporzioni.

Quote:
non mi sembra uno sforzo disumano studiarseli.

beh, forse per te :P
Scusa, ma quando ti ritrovi da studiare testi da 800 pagine che fai,
ti spari? E se tu dovessi imparare un linguaggio nuovo? Se studiarsi
qualche pattern ti sembra uno sforzo disumano, quello sarà del tutto
inconcepibile.

Quote:
tra l'altro che quel problemino tempo
E' un problema che abbiamo *tutti*. Ma si tratta del tuo lavoro, no?
Non è che devi studiare la meccanica quantistica, il neo darwinismo,
o le figure del ballo latino americano. E' il tuo lavoro ad occupare
il tempo, e studiare i DP significa fare il tuo lavoro.
Anche perché, come hai già potuto notare altre volte, è sempre tempo
ben speso.

Quote:
ma sarei anche d'accordot con te, piano piano
E difatti mica ti ho detto di studiarti i DP tutti in una botta sola
entro il giorno dopo.
Ma di tempo ne è passato parecchio da quando te ne parlai, e un poco
alla volta adesso saresti già dovuto arrivare a conoscerli tutti.

Quote:
E al giorno d'oggi non puoi fare informatica senza conoscerli

mah, magari al giorno di domani,
Sono stato buono perché il realtà è "al giorno di ieri"; ma sembrava
un poco demoralizzante detta così.
I Design Pattern è da una dozzina d'anni che sono noti, e sai quanto
me che dodici anni in ambito informatico sono almeno un paio di ere.

Quote:
perchè al giorno d'oggi sto vedendo cose
che se prima iniziavo a preoccuparmi che io non fossi sufficientemente
aggiornato e/o avessi un approccio poco oop (e quel poco sbagliato),
Non so a cosa tu ti riferisca nello specifico, ma di "programmatori"
che si millantano tali è pieno il mondo; in particolar modo sul web.
Tu non sei sufficientemente aggiornato e/o hai un approccio poco OOP
e questo è un dato di fatto, no? C'è gente messa peggio di te? Ovvio
che si, e non di poco. Ma il punto è che loro non sono programmatori
né aspirano ad esserlo.
Il fatto che facciano o tentano di fare, il tuo stesso lavoro non li
rende automaticamente "tuoi colleghi".

Quote:
Per questo ti suggerisco nuovamente di dare una *buona* lettura ai DP
e vedrai che a questi dubbi ti risponderai da solo.

uno dei problemi che ho avuto è stato che una buona lettura non ho saputo
dove farla...
Il web *trabocca* quasi letterlamente di notizie sui Design Pattern,
quindi mi sembra alquanto improbabile:

http://www.google.it/search?hl=it&q=design+pattern
(*dieci* *milioni* di risultati)

http://www.google.com/search?hl=it&q...a&lr=lang_i t
(quarantamila risultati *solo* in italiano)

Di fonti ne trovi quante ne vuoi, e da qualsiasi parte veniva citato
il libro della "Gang of Four". Alla peggio, potevi sempre optare per
acquistarlo andando sul sicuro (uno dei pochi testi che consiglio):

http://www.hoepli.it/libro.asp?ib=97...00022007003005

Quote:
poi, non demoralizzarmi, pero' eviterei di dirmi frasi tipo "ti risponderai
da solo" perchè per un motivo/problema o l'altro ho dimostrato più volte di
non riuscirci
Invece, alla fine, hai sempre dimostrato il contrario.

--
~ Io sono il più importante dei miei problemi.



Reply With Quote
  #8  
Old   
Ugo
 
Posts: n/a

Default Re: [OT] Re: Evitare variabili globali - 01-26-2008 , 05:30 AM



Quote:
beh, forse per te :P

Scusa, ma quando ti ritrovi da studiare testi da 800 pagine che fai,
ti spari?
Non lo so', non è mai successo :P

Quote:
E se tu dovessi imparare un linguaggio nuovo? Se studiarsi
qualche pattern ti sembra uno sforzo disumano, quello sarà del tutto
inconcepibile.
Lo sforzo è maggiore a causa della mia mente a cui si è stratificata una
metodologia procedurale che da autodidatta e senza supervisione è difficile
abbandonare, imparando a ragionare bene in oop...

Quote:
tra l'altro che quel problemino tempo

E' un problema che abbiamo *tutti*. Ma si tratta del tuo lavoro, no?


Quote:
E' il tuo lavoro ad occupare
il tempo, e studiare i DP significa fare il tuo lavoro.
Questo non è il pto di vista del mio capo
è gli devo dare ragione, la cui politica è "fare le cose" ed "entro ieri",
poi aggiunge quella frase contradditoria "di qualità" che sto impando a
capire che vuol dire semplicemente "che funzioni"...

Quote:
Anche perché, come hai già potuto notare altre volte, è sempre tempo
ben speso.
in effetti, io fino ad oggi e forse anche grazie questo NG, sono abbastanza
assetato di conoscienza e cerco sempre di fare le cose imparandone di nuove
e facendomele da me magari reinventando la ruota (anche se magari poi
striscia...)

Quote:
Ma di tempo ne è passato parecchio da quando te ne parlai, e un poco
alla volta adesso saresti già dovuto arrivare a conoscerli tutti.
fino all'altro giorno ero fermo al Singleton, di cui non sono ancora sicuro
di aver trovato l'approcio più "corretto" in JS, mi piacerebbe riproporti
la cosa, ma già so' che mi diresti "C'è di meglio, studia studia e
l'argomento è già stato esaurito..." e allora, per il momento evito

Quote:
C'è gente messa peggio di te? Ovvio
che si, e non di poco. Ma il punto è che loro non sono programmatori
né aspirano ad esserlo.
Non saranno così, ma dove lavoro adesso, ce n'è ben 4 di cui 2 prendono
anche più di me, che vabbe' non dico altro...

Quote:
Il fatto che facciano o tentano di fare, il tuo stesso lavoro non li
rende automaticamente "tuoi colleghi".
e sarà stato un caso

Quote:
uno dei problemi che ho avuto è stato che una buona lettura non ho saputo
dove farla...
Il web *trabocca* quasi letterlamente di notizie sui Design Pattern,
quindi mi sembra alquanto improbabile:
Effettivamente, ho ommesso che la mia attenzione si era centralizzata su un
DP specifico

Quote:
Alla peggio, potevi sempre optare per
acquistarlo andando sul sicuro (uno dei pochi testi che consiglio):

http://www.hoepli.it/libro.asp?ib=97...00022007003005
e in fatti, ci avevo anche pensato, e dopo questa chiaccherata, sono
intenzionare a fare questo acquisto il mese prossimo

Quote:
poi, non demoralizzarmi, pero' eviterei di dirmi frasi tipo "ti risponderai
da solo" perchè per un motivo/problema o l'altro ho dimostrato più volte di
non riuscirci

Invece, alla fine, hai sempre dimostrato il contrario.
Eh, fosse vero, "ma che film hai visto", come direbbe mia suocera

Andiamo in ordine cronologico inverso, coadiuvato da un bel:
<http://groups.google.it/group/it.comp.lang.javascript/search?hl=it&q=author%3AUgo&scoring=d>

"Evitare variabili globali"
se si tratta di un singolo oggetto, ora ho chiaro che devo usare il pd
singleton, nel caso di più istanze dello stesso, forse la "lazy factory"
ma manco ne sono sicuro e tu per altro ti sei già espresso...
"Oggetto XHR"
Un vero incubo, in cui ancora oggi, non ne sono venuto a capo del tutto
e non sono stato in grado di capire quale fosse l'approcio più sicuro ed
elegante
"Tabelle molto grosse"
Per il momento ho adottato un metono che non permette un "molto"
particolarmente elevato, chissa'
.....

Vabbe' cmq, piano piano
E' sempre interessante e utile "parlare" qui, magari ogni tanto 2 righe di
codice non le disdegnerei per niente, cmq...

Ciao e grazie


Reply With Quote
  #9  
Old   
ZER0
 
Posts: n/a

Default Re: [OT] Re: Evitare variabili globali - 01-28-2008 , 02:44 AM



On Sat, 26 Jan 2008 12:30:57 +0100, Ugo wrote:

Quote:
E' il tuo lavoro ad occupare
il tempo, e studiare i DP significa fare il tuo lavoro.

Questo non è il pto di vista del mio capo

è gli devo dare ragione, la cui politica è "fare le cose" ed "entro ieri",
poi aggiunge quella frase contradditoria "di qualità" che sto impando a
capire che vuol dire semplicemente "che funzioni"...
[..]
Non saranno così, ma dove lavoro adesso, ce n'è ben 4 di cui 2 prendono
anche più di me, che vabbe' non dico altro...
Direi che con questo abbiamo concluso la discussione.

--
~ "Accadono cose che sono come domande.
Passa un minuto, oppure anni e poi la vita risponde." (A. Baricco)



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.