Post on 21-Jul-2015
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 Testahttp://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 praticamenteimpossibile: assumiamolo come “limite”
cui far tendere i nostri sforzi
code(i) ≠ OCP
lim code(i) = OCPi →∞
Regole kata “Aperto-chiuso”
1 - Scrivere un primo test.Scrivere una factory che restituiscaun oggetto che lo faccia passare. La factory non deve contenere logica“condizionale”, ma solo creareoggetti e collegarli
http://matteo.vaccari.name/blog/archives/293
Fot
o; H
arm
Rhe
berg
en-
Flic
kr
Regole kata “Aperto-chiuso”2 - Scrivere un test che fallisca. Se si
riesce a farlo passare modificandosolo la factory e/o creando un nuovo oggetto, scrivere un altrotest, altrimenti rifattorizzare il codiceesistente fino a superare l’ultimotest solo aggiungendo nuovo codice(Barra “arancione”: barra verde con ultimo test ignorato)
lim code(i) = OCPi →∞
Regole kata “Aperto-chiuso”Attenzione: non è il modo reale di
lavorare, ma solo un esercizio per affinare una determinata capacità
Fot
o; D
avid
e R
izzo
http
://w
ww
.flic
kr.c
om/p
hoto
s/23
2287
86@
N06
“Sasso – forbici - carta” e OCP
Idea nr. 2: un sistema che valuti una lista diregole è un sistema “aperto-chiuso” rispetto
all’introduzione di nuove regole
Chiusura verso quali modifiche?Ci proteggiamo rispetto all’introduzione di
nuovi semi e regoleEsempio: http://www.umop.com/rps15.htm