View Full Version : Refactoring...chi mi presenta questo sconosciuto?
Bene.
Finalmente ho fatto il mio primo task (thanks Cdimauro) e ora mi sento molto più TDD. :sofico:
Ma mi manca ancora un passetto...il REFACTORING.
La parola è molto eloquente...RIFARE. Quindi prendere in mano il codice e vedere se si può fare qualcosa di più elegante e semplice.
Ok...ma come si fa ?? :bimbo:
Non è che c'è qualcuno che mi dà uno schema d'attaco??
Grazie :ave:
Vai a passi piccoli. Vedi che una variabile non serve? La elimini e lanci i test.
Vedi che ci sono 3 if che fanno la stessa cosa? Semplifichi e lanci i test.
Non committare mai un refactoring senza aver lanciato i test prima.
Con il refactoring vuoi semplificare quello che c'è già. Non aggiungere mai nessuna feature.
E per impratichirti con i refactoring usa i tool messi a disposizione da Eclipse.
E poi:
http://www.refactoring.com/
ma il refactoring è piu o meno cio che si fa "a mano" sviluppando non in test driven, right?...tipo ricontrollo il prog e "smusso" gli angoli, magari facendo diventare elegante qualcosa che prima era racchio....giusto?
ma il refactoring è piu o meno cio che si fa "a mano" sviluppando non in test driven, right?...tipo ricontrollo il prog e "smusso" gli angoli, magari facendo diventare elegante qualcosa che prima era racchio....giusto?
Refactoring e' definito da Fowler come una serie di piccoli passi che preservano il comportamento osservabile del programma e che servono per migliorare la struttura e la leggibilita' del codice.
Le due frasi in grassetto sono i due punti chiave. Al termine di un refactoring:
- il comportamento osservabile deve essere il medesimo
- la struttura del codice deve essere migliore (piu' semplice) e il codice piu' leggibile
Un refactoring banale (ma fra i piu' importanti) e' rinominare una variabile o un metodo o una classe, perche' mantiene ovviamente invariato il comportamento osservabile e migliora la leggibilita'.
Un altro refactoring fondamentale e' Extract Method, che prende una certa porzione di codice e la estrae in un metodo che poi e' invocato al posto del codice.
E per impratichirti con i refactoring usa i tool messi a disposizione da Eclipse.
E poi:
http://www.refactoring.com/
:sbav:
vabbe prima mi leggo il libro :asd:
cioe piu o meno quello che mi insegna il prof di algoritmi...io gli porto un metodo di 10 righe e lui lo riscrive a mente in 2 righe e fa le stesse cose che fa il mio migliorandone l efficienza...al che ora sto cercando di emularlo e tutto quello che scrivo cerco di farlo stare nel minimo possibile e che sia il piu pulito possibile...
se penso che non riesco nemmeno a fare forza4, mi viene male...ma si puo essere piu stupidi? spero entro domani di levarmelo dai piedi, cosi possimo iniziare a pensare a cose spesse (penso sempre che cimentadosi in imprese piu grandi di te, per un po si annaspa, ma almeno ci si skilla piu infretta)
se penso che non riesco nemmeno a fare forza4, mi viene male...ma si puo essere piu stupidi? spero entro domani di levarmelo dai piedi, cosi possimo iniziare a pensare a cose spesse (penso sempre che cimentadosi in imprese piu grandi di te, per un po si annaspa, ma almeno ci si skilla piu infretta)
Grrr... se non la smetti con questo disfattismo... :p
Sono d'accordo con Fek... :nonsifa:
Nessuno è nato imparato e tutti hanno imparato quello che sanno a piccoli, per non dire piccolissimi, passi !!! :p
Figurati...a me piace il 3D ...è praticamente da quando ho 16 anni che mi dico che devo imparare a programmare le DirectX e OpenGL...bhè, nè ormai 24 e sono allo stesso punto. :muro: :muro:
A proposito...qualcuno sa se ci sono dei Tutorial per DirectX, e caso mai per MDX, tipo qulli NeHe per OpenGL??
Un buon libro e via :p
"Introduction to 3D Game Programming with DirectX 9.0" è molto ben fatto a mio parere
Figurati...a me piace il 3D ...è praticamente da quando ho 16 anni che mi dico che devo imparare a programmare le DirectX e OpenGL...bhè, nè ormai 24 e sono allo stesso punto. :muro: :muro:
A proposito...qualcuno sa se ci sono dei Tutorial per DirectX, e caso mai per MDX, tipo qulli NeHe per OpenGL??
mi ricordi qualcuno :|
devo ancora prendere i libri consigliati da fek anni fa su ngi...
ehm...qualcosa di più "on-line" ?? :bimbo: :flower:
boh cercando con goggle ho trovato un sito che ne linka il pdf però non so se è legale (anche se il sito dice che è legale ma boh)... Non me la rischio a postarlo :p
Sono d'accordo con Fek...
Nessuno è nato imparato e tutti hanno imparato quello che sanno a piccoli, per non dire piccolissimi, passi !!!
se non fosse che la mia situazione è un tantino diversa...io questo corso l ho gia seguito anni fa e l ho anche passato LOL...solo che per problemi vari ho rinunciato alla carriera e ho perso tutti gli esami.....poi mi son reiscritto (non chiedetemi perche l ho fatto, ci vorrebbe un libro per spiegarlo)...fatto sta che questo corso teoricamente dovrei farlo ad occhi chiusi mentre mi ha creato notevoli problemi, almeno fino a oggi a pranzo....eh si perche oggi a pranzo ho acceso il cervello (che era spento e non avevo controllato) e mi è venuto da pensare che in fondo il gioco forza 4 è di una semplicita che fa spavento e che la sua risoluzione l avrei potuta pensare anche 10 anni fa quando avevo le cacche al naso....fatta questa semplice considerazione il mio cervello si sta lentamente riallineando nel giusto binario, ho codato mezz ora e l es di lab è bello che finito (devo solo piu finire dei metodi farlocchi per salvare e caricare le partite da files di testo ma son piccolezze) e tipo domani lo consegno...
che c entra con diamonds tutto questo vi chiederete? c entra, perche se non fossi nemmeno riuscito a fare una semplicissima consegna banale di un corso inutile per niubbi, non avrei mai acquisito la scimmia (scimmia == fiducia in me stesso) necessaria per buttarmi in un task di diamonds...
fek non ti preoccupare, non sono piu come 3 anni fa: fino all anno scorso se non riuscivo a fare una cosa per x tempo, concludevo di non avere stoffa e lasciavo perdere...se non riesco adesso, concludo che se mi infogno per x+y tempo (con y direttamente proporzionale al mio livello di concentrazione) ci riesco comunque! poi ci si fara pure fatica, ma aimè questo è il prezzo che si paga a voler programmare....
per quanto riguarda i libercoli consigliati: mi sono procurato oltre a test driven by examples anche l altro di beck e thinking in java e extreme programming cookbook, credo che siano un gustoso inizio no? per ora sono ancora su T D D by example e lo trovo molto interessante, se non altro ora capisco la strada che si segue qui...seguendo i task e 3d di pair prog devo dire che il codice trattato mi spaventa molto meno di una settimana fa, anche se cmq dovro come minimo leggermelo tutto prima di avere anche solo velatamente chiaro il disegno d insieme; ma gia il mio cervello si sta evolvendo....
per tornare in topic, si puo dire che oggi abbia fatto un refactoring un po radicale....da una cascata di due o 3 metodi ricorsivi malfunzionanti ho compattato (anche in termini di eleganza e spazio) in un metodo iterativo che fa meno giri, funziona perfettamente ed e piu semplice da pensare :stordita:
(non chiedetemi perche l ho fatto, ci vorrebbe un libro per spiegarlo)
Non faccio alcuna fatica a crederti :p
per quanto riguarda i libercoli consigliati: mi sono procurato oltre a test driven by examples anche l altro di beck e thinking in java e extreme programming cookbook, credo che siano un gustoso inizio no? per ora sono ancora su T D D by example e lo trovo molto interessante, se non altro ora capisco la strada che si segue qui...seguendo i task e 3d di pair prog devo dire che il codice trattato mi spaventa molto meno di una settimana fa, anche se cmq dovro come minimo leggermelo tutto prima di avere anche solo velatamente chiaro il disegno d insieme; ma gia il mio cervello si sta evolvendo....
Devi leggere Refactoring di Fowler e Refactoring To Patterns di Krjievsky (o come si scrive lui). E poi imparare il dono della sintesi! Se scrivi due righe di troppo in Diamonds ti taglio le mani :D
La sintesi. Mi ricorda un aneddoto raccontato in Refactoring To Patterns.
Vado a memoria. Un giorno un venditore di cappelli decide di creare un'insegna per il suo negozio, parte con la prima bozza: il disegno di un cappello e sotto la scritta: "Hatter, makes and sells hats for ready money". Guarda cio' che ha scritto e pensa che Hatter non serva, se vende cappelli lo e' per forza, allora scrive "Makes and sells hats for ready money". Poi pensa che se vende i cappelli, qualcuno li dovra' pure fare allora cambia in "Sells hats for ready money". Ma se vende cappelli, lo fa per soldi, quindi arriva a "Sells hats". Poi e' un negozio, vendera' sicuramente qualcosa, non serve ripeterlo "Hats", sotto il disegno di un cappello. Non serve piu' la scritta, basta il disegno, il dono della sintesi :D
lol, verissimo...io abbraccio questo stile, fortunatamente...se potessi scrivere un metodo in 1 riga e fosse efficiente e chiaro sarei sempre felice :)
Basta che non vai mai a capo :D
La sintesi. Mi ricorda un aneddoto raccontato in Refactoring To Patterns.
Vado a memoria. Un giorno un venditore di cappelli decide di creare un'insegna per il suo negozio, parte con la prima bozza: il disegno di un cappello e sotto la scritta: "Hatter, makes and sells hats for ready money". Guarda cio' che ha scritto e pensa che Hatter non serva, se vende cappelli lo e' per forza, allora scrive "Makes and sells hats for ready money". Poi pensa che se vende i cappelli, qualcuno li dovra' pure fare allora cambia in "Sells hats for ready money". Ma se vende cappelli, lo fa per soldi, quindi arriva a "Sells hats". Poi e' un negozio, vendera' sicuramente qualcosa, non serve ripeterlo "Hats", sotto il disegno di un cappello. Non serve piu' la scritta, basta il disegno, il dono della sintesi :D
Altro libro da prendere...ma quando finirò di leggere tutto ? :| sono a quota 26500/27000 pagine...pazzia ? :D
Basta che non vai mai a capo :D
:rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl:
Io mi sono preso:
Refactoring
Refactoring to Patterns
Design patterns
Test Driven Development
Dell'ultimo sono a buon punto, ma in questi giorni ho poco tempo :muro:
^TiGeRShArK^
21-01-2006, 12:32
Altro libro da prendere...ma quando finirò di leggere tutto ? :| sono a quota 26500/27000 pagine...pazzia ? :D
tranquillo..ti batto io in quanto a pazzia :D
Ora come ora mi sto facendo leggere Second Contact di turtledove da Microsoft Readed... in inglese :rotfl:
Uhm...farmi leggere probabilemente non capirei molto essendo tutti in inglese...però leggendoli io riesco a capire...non tutto ma la maggior parte :D
che significa farti leggere??
^TiGeRShArK^
22-01-2006, 21:10
ho scoperto ora questa BELLISSIMA funzionalità di Microsoft Reader che ti legge gli e-books in formato .lit....
e il bello è ke legge perfettamente parole inventate da Turtledove come "Tosevites" :eek:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.