[ruby-it] GOF Patterns in Ruby
Paolo Donà
paolo.dona a seesaw.it
Ven 2 Feb 2007 10:40:11 CET
Grazie a tutti per la piacevole discussione,
Con il mio post non sono però riuscito ad imprimere al thread il taglio che
desideravo, ovvero la pragmaticità... con questo che voglio dire? Siamo
tutti appassionati di software e molti di leggono/hanno letto libri a
riguardo, se ci mettiamo a discutere su quanto siano
belli/brutti/importanti/inutili i pattern in questo/quel linguaggio potremmo
andare avanti per anni, senza però condensare in codice e conoscenza. Prova
ne è il fatto che in 11 risposte al mio post non è presente una linea di
codice.
Riusciamo a portare qualche esempio pratico di utilizzo dei pattern? Ovvero
riusciamo a dimostrare quando il pattern ha risolto un problema in un
dominio specifico?
Parto io per dare uno spunto anche se è banale:
A me il singleton ha reso possibile la definizione statica dei tabnav.
Quando fate un Tabnav fate:
class MyTabnav < Tabnav::Base
add_tab do
named 'something'
links_to :controller => 'fake'
end
end
add_tab è un metodo di classe definito Tabnav::Base ma quando lo chiamo deve
aggiungere un tab in MyTabnav non in Tabnav::Base, quindi la list dei tab
non deve essere un attributo di classe in Tabnav::Base altrimenti verrebbe
condiviso tra tutti i tabnav dell'applicazione.
Io ho risolto con il singleton in questo modo:
require 'singleton'
module Tabnav
class Base
include Singleton
attr_accessor :tabs
def self.add_tab &block
raise "you should provide a block" if !block_given?
instance.tabs ||= []
instance.tabs << Tabnav::Tab.new(&block)
end
private
def initialize
@tabs = []
end
end
end
In questo modo ogni classe che estende Tabnav::Base ha il suo singleton e i
suoi tab. Chennesò, magari c'è un modo migliore di farlo... ma quello che
volevo ottenere è una discussione su roba 'vera'.
Attendo ansiosamente riscontri (con codice, ovvio :-))
Paolo
On 2/2/07, chiaro scuro <kiaroskuro a gmail.com> wrote:
> ma dai che l'ho pure letto ed è leggibilissimo. è un codice onesto.
>
> mi ricordo che mi aveva colpito il codice di ROXI di Lana, perchè essendo
> scritto in C ed essendo leggibile, mi aveva fatto capire che non avevo
> capito nulla di C. io potrei riprendere e commentare parti di quello. (
> http://ruby-it.org/pages/Roxi )
>
> non riesco però più a rintracciare il codice.. gabriele, se sei in ascolto
> :-)
>
> On 2/2/07, Giovanni Intini <intinig a pme.it> wrote:
> >
> > chiaro scuro ha scritto:
> >
> > Il codice VBA che sto sviluppando mi ha colpito parecchio...
> > ... come un mattone che si schianta contro il tuo muso!
> > > prendiamo una buona abitudine.. proviamo a leggere del codice e
> > > commentarlo.
> > >
> > > poi possiamo mettere le review su ruby-it o su trm.
> > >
> > > letto buon codice ultimamente? che codice vi ha colpito?
> > >
> > > On 2/2/07, david <david.palm a iperbole.bologna.it> wrote:
> > >>
> > >>
> > >> Verissimo. Non ci avevo mai pensato, ma è proprio così. Leggo
molto
> > >> meno codice di romanzi e il mio lavoro è scrivere codice tutto il
> > >> giorno...
> > >> Massimiliano => EyeOpeningPost(TM)
> > >> :-)
> > >> Massimiliano Mirra wrote:
> > >>
> > > _______________________________________________
> > > Ml mailing list
> > > Ml a lists.ruby-it.org
> > > http://lists.ruby-it.org/mailman/listinfo/ml
> >
> > _______________________________________________
> > Ml mailing list
> > Ml a lists.ruby-it.org
> > http://lists.ruby-it.org/mailman/listinfo/ml
> >
>
>
>
> --
> -- Kia
>
> therubymine.com | be a miner
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>
--
Paolo Dona'
SeeSaw | Another point of view
http://www.seesaw.it
paolo.dona a seesaw.it
personal http://paolodona.blogspot.com
Maggiori informazioni sulla lista
Ml