|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Configuration file
Ero capitato dalle parti del codice in cui accediamo alla configurazione....
mi stavo chiedendo... ma abbiamo davvero bisogno di un file xml per scrivere la configurazione del gioco? non basterebbe uno dei normalissimi properties file che vengono usati in java? piu' che altro questo semplificherebbe notevolmente il codice di gestione della configurazione. questo è il codice per caricare la configurazione da un file di properties e leggere una qualsiasi proprietà sotto forma di stringa: Codice:
// Read properties file. Properties properties = new Properties(); try { properties.load(new FileInputStream("filename.properties")); } catch (IOException e) { } String property1 = properties.getProperty("key"); Codice:
GravityMultpiplier = 8 InputRate = 60 ... ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
truissimo, anche a lavoro si usano per lo piu file di properties.
l'xml viene usato se le info di configurazione sono un po piu strutturate, tipo per descrizione di tabelle, oppure per le connesioni a db. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Non so se c'è un qualche motivo fondamentale, ma visto che gli oggetti in GameConfig stanno iniziando a diventare tanti, passare ad una struttura più semplice sarebbe una cosa molto gradita
![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Una parte di me è favorevole a questo cambiamento. L'altra non sopporta di vedere il codice attuale di Config venir cancellato con un semplice svn commit. Dopo tutto il sudore che ho versato durante il suo refactoring mi ci sono affezionato.
ciao ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
secondo me in XML è molto figo e permette un controllo migliore...
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() Se ci e' utile XML lo utilizziamo, altrimenti ciccia. Mi dispiace solo per VICIUS che si e' fatto un mazzo tanto per la configurazione e va orgoglioso del risultato. In effetti cancellare tutto con un click sembra quasi crudele, ma se necessario... facciamolo. ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
![]() Purtroppo e' cosi', quello che conta e' il progetto. A me piace pensare che tutto il codice che scrivo mi abbia insegnato qualcosa, quindi anche se non venisse usato, ho comunque imparato qualcosa dal lavoro che ho fatto e non e' andato perso.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Daniele: Il fatto del phigo ovviamente è per dire che è molto versatile e permette il controllo sui dati tramite lo schema... Avere il config in XML NON è un problema al momento...
Fek: Il sistema più semplice non è lasciare tutto com'è senza perdere altro tempo per rifarlo da capo? |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
Il sistema piu' semplice e' fare refactoring del codice di Config per usare qualcosa di piu' semplice, meno flessibile ma che risolve perfettamente le nostre esigenze del momento. In futuro vedremo: YAGNI.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 15-01-2006 alle 12:42. |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
PHIGO??? e chè vuol dire??
![]() ![]() Il sistema di configurazione lo abbiamo già ?? Bhè alllora lasciarlo lì è la cosa più semplce per far funzionare il tutto! Poi non mi sembra molto furbo sostituire il tutto per avere qualcosa di più semplice se poi in un futuro per avere qualcosa di più potente e felssibile bisogna riniziare da capo...dove la mettiamo la riusabilità ![]() Poi l'XML ci garantisce l'uso di uno standard interpiattaforma...da non sottovalutare per futuri sviluppi e poi se mai dovessimo gestire dati complessi avremmo già tutto pronto. io voto XML. ![]() ![]() ![]() @Fek: ma dove hai imparato a essere così "agile"? là in inghilterra sviluppate così?? ![]() |
![]() |
![]() |
![]() |
#14 | |||
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
![]() Quote:
Quote:
Diciamo che quando vi dico di non overingegnerizzare, ve lo dico perche' io lo facevo e ne ho pagate spesso e volentieri le conseguenze.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|||
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Domanda da ingegnere... o meglio futuro ingegnere (mi manca a poco):
ma allora che cacchio ci hanno spiegato e insegnato?? ![]() Mi hanno fatto una testa tanta nel dire: "non fate subito codice...pensate e studiate per trovare la soluzione che vi garantisce massima resa e minimo sforzo per il futuro...in modo che ogni cosa che ti capita nel futuro sei pronto a risolverla" L'immagine più bella che ho in mente è del mio prof di ingegneria del Software, quello della triennale non quello della specialistica che lo ammazzerei ![]() ![]() Lo sviluppo software è come una palo di legno in un muro. Quando capita qualcosa è come un peso che va a colpire l'asta...se arriva subito non c'è problema perchè il muro ci aiuta, ma se arriva più avanti dipende quando siamo stati bravi ad essere flessibili (insomma tutto quello che fek ci dice di scordarci ![]() ![]() Così se il cliente arriva e ti chiede una cosa nuova e imprevista (per lui, ma no per te che già in analisi l'avevi calcolata) gli dici: faccio tutto quello che vuole...aggiunga 2 zeri alla cifra ![]() AIUTO ![]() ![]() Scusate se sono andato così OFF TOPIC, ma non vi posso negare come il TDD mi stia appassionando e piacendo...ma anche lo sforzo disumano che sto chiedendo alla mia natura ![]() ![]() Grazie a tutti voi... ![]() ![]() ...mi sto divertendo e esaltando come da un po' non mi succedeva! ![]() |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Innanzitutto mi dispiace per vicius...
so cosa si prova e il suo codice nel config mi piaceva anke molto ![]() però anche a livello di gestione del file di configurazione guadagniamo molto in leggibilità: Codice:
<configuration> <property type="integer" name="GravityMultiplier">8</property> <property type="integer" name="StrongestGravityMultiplier">20</property> <property type="integer" name="InputRate">60</property> <property type="integer" name="NormalRepeatDelay">200</property> <property type="integer" name="FastRepeatDelay">100</property> <property type="integer" name="FrameRate">20</property> <property type="integer" name="UpdateRate">10</property> <property type="integer" name="GemAnimationDelay">3500</property> <property type="integer" name="GemAnimationUpdateRate">100</property> <property type="integer" name="NewGemDelay">300</property> <property type="integer" name="width">800</property> <property type="integer" name="height">600</property> <property type="integer" name="rows">14</property> <property type="integer" name="columns">8</property> <property type="integer" name="SizeMultiplier">4</property> <property type="integer" name="SpeedDivisor">10</property> </configuration> Codice:
GravityMultiplier = 8 StrongestGravityMultiplier = 20 InputRate = 60 NormalRepeatDelay = 200 FastRepeatDelay = 100 FrameRate = 20 UpdateRate = 10 GemAnimationDelay = 3500 GemAnimationUpdateRate = 100 NewGemDelay = 300 width = 800 height = 600 rows = 14 columns = 8 SizeMultiplier = 4 SpeedDivisor = 10 ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#17 | ||
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11782
|
Quote:
Quello che ti hanno insegnato si sa oggi che non e' il modo piu' produttivo di scrivere la maggior parte del codice, non si sapeva ieri: l'Ingegneria del Software e' una materia ancora relativamente giovane, ha poche decine di anni. L'Ingegneria Civile, ad esempio, ha una storia di milenni. Quote:
Di contro, se introduci flessibilita' solo al momento in cui ne hai bisogno e adotti pratiche tali che il costo di un cambiamento sia relativamente costante durante tutto il corso del progetto, allora potrai prevedere con buona esattezza quanto la nuova feature che ti e' stata chiesta ti costera', e non ti sara' necessario averla prevista e avrai sempre e solo pagato per cio' che hai usato. Al contrario il professore ti sta insegnando questo: se tu devi andare da Roma a Milano entro domani, affitta un elicottero, perche' magari il treno si rompe, magari a Milano la stazione e' in sciopero, magari piove e arrivi in ritardo, magari poi decidi che vuoi arrivare prima, magari poi prenota un viaggio a New York perche' ti potrebbe servire, cerca di prevedere tutto. Ma a te serve solo arrivare a Milano entro domani ![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12093
|
Quote:
![]() MA LOOOLLLL!!!! ![]() bellissimo quest'esempio! ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Grazie mille Fek
![]() Ma ora mi vengono altre domande: Quote:
E poi se domani facessimo Fruit Crush ( ![]() Sono tutta cavolate... ![]() ![]() |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
la flessibilita si realizza non facendo overenginering(meno roba cè, a meno roba dovrai pensare quando fai un cambiamento in corso) e procedendo per refactoring. Il refactoring risulta possibile perche il codice è scritto in maniera semplice(non facile) e ci sono i test che assicurano un passaggio di refactoring piu sicuro.
cmq se vuoi approfondire, ti consiglio extreme programming explained di beck(si trova anche online ![]() il libro non è neanche molto lungo(in confronto a quello sui pattern e quello sul refactoring...rispettivamente 300 e 400 pagine ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:37.