SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
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!!!

Más contenido relacionado

Similar a Rock scissors-paper-kata (8)

Anti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo evitiAnti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo eviti
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
Java Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine LeariningJava Symbolic Regression - Machine Learining
Java Symbolic Regression - Machine Learining
 
S.P.R.I.Te. magazine n.6
S.P.R.I.Te. magazine n.6S.P.R.I.Te. magazine n.6
S.P.R.I.Te. magazine n.6
 
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)Programmazione a oggetti tramite la macchina del caffé (pt. 3)
Programmazione a oggetti tramite la macchina del caffé (pt. 3)
 
Programmazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpaProgrammazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpa
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
S.P.R.I.Te. magazine n.5
S.P.R.I.Te. magazine n.5S.P.R.I.Te. magazine n.5
S.P.R.I.Te. magazine n.5
 

Más de Franco Lombardo

Más de Franco Lombardo (12)

happiness_2023.pdf
happiness_2023.pdfhappiness_2023.pdf
happiness_2023.pdf
 
Kotlin from-scratch 3 - coroutines
Kotlin from-scratch 3 - coroutinesKotlin from-scratch 3 - coroutines
Kotlin from-scratch 3 - coroutines
 
Kotlin from-scratch 2 - functions
Kotlin from-scratch 2 - functionsKotlin from-scratch 2 - functions
Kotlin from-scratch 2 - functions
 
Kotlin from-scratch
Kotlin from-scratchKotlin from-scratch
Kotlin from-scratch
 
Agile Venture Milan - Unit testing on AS400? Yes we can! (With Kotlin)
Agile Venture Milan - Unit testing on AS400? Yes we can! (With Kotlin)Agile Venture Milan - Unit testing on AS400? Yes we can! (With Kotlin)
Agile Venture Milan - Unit testing on AS400? Yes we can! (With Kotlin)
 
Unit testing on AS400? Yes we can! (With Kotlin)
Unit testing on AS400? Yes we can! (With Kotlin)Unit testing on AS400? Yes we can! (With Kotlin)
Unit testing on AS400? Yes we can! (With Kotlin)
 
Interprete Kotlin per l’RPG e libreria Web Components: Open Source per la m...
Interprete Kotlin per l’RPG  e libreria Web Components: Open Source per  la m...Interprete Kotlin per l’RPG  e libreria Web Components: Open Source per  la m...
Interprete Kotlin per l’RPG e libreria Web Components: Open Source per la m...
 
TDD su AS400? Con Kotlin si può fare! - Italian Agile Days 2019
TDD su AS400? Con Kotlin si può fare! - Italian Agile Days 2019TDD su AS400? Con Kotlin si può fare! - Italian Agile Days 2019
TDD su AS400? Con Kotlin si può fare! - Italian Agile Days 2019
 
Un interprete Kotlin per il linguaggio RPG AS400 - IBM i
Un interprete Kotlin per il linguaggio RPG AS400 - IBM iUn interprete Kotlin per il linguaggio RPG AS400 - IBM i
Un interprete Kotlin per il linguaggio RPG AS400 - IBM i
 
Agile Happiness - Agile O'Day 2018
Agile Happiness - Agile O'Day 2018Agile Happiness - Agile O'Day 2018
Agile Happiness - Agile O'Day 2018
 
Agile Happiness 2
Agile Happiness 2Agile Happiness 2
Agile Happiness 2
 
Agile Happiness
Agile HappinessAgile Happiness
Agile Happiness
 

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 è 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
  • 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 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!!!