Rock scissors-paper-kata

12
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

Transcript of Rock scissors-paper-kata

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

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 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

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