Kata “Sasso – forbici – carta”
all’XP User Group di Bergamo
Da un’idea di Matteo Vaccari
(http://matteo.vaccari.name/blog/archives/431)
Franco Lombardo
http://www.molteniinformatica.com
Marco Testa
http://www.funambol.com
Cosa è un kata?
“Serie di movimenti preordinati e
codificati che rappresentano varie
tecniche e tattiche di combattimento
evidenziandone i principi e le
opportunità di esecuzione.” Wikipedia
Principio “Aperto-chiuso”
Per aggiungere funzionalità ad un
programma dovrebbe essere sufficiente
scrivere nuovo codice,
senza modificare quello esistente
Open Close Principle definito da Bertrand Meyer
Principio “Aperto-chiuso”
Sarebbe bello, anche se praticamente
impossibile: assumiamolo come “limite”
cui far tendere i nostri sforzi
code(i) ≠ OCP
lim code(i) = OCP
i →∞
Regole kata “Aperto-chiuso”
1 - Scrivere un primo test.
Scrivere una factory che restituisca
un oggetto che lo faccia passare. La
factory non deve contenere logica
“condizionale”, ma solo creare
oggetti e collegarli
http://matteo.vaccari.name/blog/archives/293
Foto;HarmRhebergen-Flickr
Regole kata “Aperto-chiuso”
2 - Scrivere un test che fallisca. Se si
riesce a farlo passare modificando
solo la factory e/o creando un
nuovo oggetto, scrivere un altro
test, altrimenti rifattorizzare il codice
esistente fino a superare l’ultimo
test solo aggiungendo nuovo codice
(Barra “arancione”: barra verde con
ultimo test ignorato)
lim code(i) = OCP
i →∞
Regole kata “Aperto-chiuso”
Attenzione: non è il modo reale di
lavorare, ma solo un esercizio per
affinare una determinata capacità
Foto;DavideRizzohttp://www.flickr.com/photos/23228786@N06
Regole “Sasso – forbici - carta”
BATTE
E’ BATTUTO
E’ IN PARITA’
Regole “Sasso – forbici - carta”
BATTE
Idea nr. 1:
bastano solo
le frecce verdi!
“Sasso – forbici - carta” e OCP
Idea nr. 2: un sistema che valuti una lista di
regole è un sistema “aperto-chiuso” rispetto
all’introduzione di nuove regole
Chiusura verso quali modifiche?
Ci proteggiamo rispetto all’introduzione di
nuovi semi e regole
Esempio: http://www.umop.com/rps15.htm
Chiusura verso quali modifiche?
Non siamo protetti rispetto ad altri tipi di
modifiche, come ad esempio l’estensione
del gioco da 2 ad n giocatori:
il principio aperto-chiuso non fa magie!!!

Rock scissors-paper-kata

  • 1.
    Kata “Sasso –forbici – carta” all’XP User Group di Bergamo Da un’idea di Matteo Vaccari (http://matteo.vaccari.name/blog/archives/431) Franco Lombardo http://www.molteniinformatica.com Marco Testa http://www.funambol.com
  • 2.
    Cosa è unkata? “Serie di movimenti preordinati e codificati che rappresentano varie tecniche e tattiche di combattimento evidenziandone i principi e le opportunità di esecuzione.” Wikipedia
  • 3.
    Principio “Aperto-chiuso” Per aggiungerefunzionalità ad un programma dovrebbe essere sufficiente scrivere nuovo codice, senza modificare quello esistente Open Close Principle definito da Bertrand Meyer
  • 4.
    Principio “Aperto-chiuso” Sarebbe bello,anche se praticamente impossibile: assumiamolo come “limite” cui far tendere i nostri sforzi code(i) ≠ OCP lim code(i) = OCP i →∞
  • 5.
    Regole kata “Aperto-chiuso” 1- Scrivere un primo test. Scrivere una factory che restituisca un oggetto che lo faccia passare. La factory non deve contenere logica “condizionale”, ma solo creare oggetti e collegarli http://matteo.vaccari.name/blog/archives/293 Foto;HarmRhebergen-Flickr
  • 6.
    Regole kata “Aperto-chiuso” 2- Scrivere un test che fallisca. Se si riesce a farlo passare modificando solo la factory e/o creando un nuovo oggetto, scrivere un altro test, altrimenti rifattorizzare il codice esistente fino a superare l’ultimo test solo aggiungendo nuovo codice (Barra “arancione”: barra verde con ultimo test ignorato) lim code(i) = OCP i →∞
  • 7.
    Regole kata “Aperto-chiuso” Attenzione:non è il modo reale di lavorare, ma solo un esercizio per affinare una determinata capacità Foto;DavideRizzohttp://www.flickr.com/photos/23228786@N06
  • 8.
    Regole “Sasso –forbici - carta” BATTE E’ BATTUTO E’ IN PARITA’
  • 9.
    Regole “Sasso –forbici - carta” BATTE Idea nr. 1: bastano solo le frecce verdi!
  • 10.
    “Sasso – forbici- carta” e OCP Idea nr. 2: un sistema che valuti una lista di regole è un sistema “aperto-chiuso” rispetto all’introduzione di nuove regole
  • 11.
    Chiusura verso qualimodifiche? Ci proteggiamo rispetto all’introduzione di nuovi semi e regole Esempio: http://www.umop.com/rps15.htm
  • 12.
    Chiusura verso qualimodifiche? Non siamo protetti rispetto ad altri tipi di modifiche, come ad esempio l’estensione del gioco da 2 ad n giocatori: il principio aperto-chiuso non fa magie!!!