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 è 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
3. 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
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
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 quali modifiche?
Ci proteggiamo rispetto all’introduzione di
nuovi semi e regole
Esempio: http://www.umop.com/rps15.htm
12. 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!!!