Top Banner
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
12

Rock scissors-paper-kata

Jul 21, 2015

Download

Technology

Franco Lombardo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 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

Page 2: Rock scissors-paper-kata

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

Page 3: Rock scissors-paper-kata

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

Page 4: Rock scissors-paper-kata

Principio “Aperto-chiuso”

Sarebbe bello, anche se praticamenteimpossibile: assumiamolo come “limite”

cui far tendere i nostri sforzi

code(i) ≠ OCP

lim code(i) = OCPi →∞

Page 5: Rock scissors-paper-kata

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

Page 6: Rock scissors-paper-kata

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

Page 7: Rock scissors-paper-kata

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

Page 8: Rock scissors-paper-kata

Regole “Sasso – forbici - carta”

BATTE

E’ BATTUTO

E’ IN PARITA’

Page 9: Rock scissors-paper-kata

Regole “Sasso – forbici - carta”

BATTE

Idea nr. 1: bastano solo le frecce verdi!

Page 10: Rock scissors-paper-kata

“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

Page 11: Rock scissors-paper-kata

Chiusura verso quali modifiche?Ci proteggiamo rispetto all’introduzione di

nuovi semi e regoleEsempio: http://www.umop.com/rps15.htm

Page 12: Rock scissors-paper-kata

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