refactoring piloté par les tests
DESCRIPTION
Agile Days Paris 2010TRANSCRIPT
© Copyright Pyxis Technologies
Agile Days 2010Paris
Refactoring guidé par les tests
2© Copyright Pyxis Technologies
Où étiez-vous le 10 novembre 2009 au soir ?
3© Copyright Pyxis Technologies
Moi, j'étais au Paris JUG
@DidierGirard
• Google Wave
• Google App Engine
Je retiens
• C'est facile
• C'est rapide
• C'est l'fun :)
4© Copyright Pyxis Technologies
Ok, Go !
5© Copyright Pyxis Technologies
Snippet
6© Copyright Pyxis Technologies
Cool… je copie / colle... :)
7© Copyright Pyxis Technologies
...et je crée moi même un code pourri :(
Nom de méthode inadéquat
Plusieurs responsabilités
Fonctionnel caché
Non-fonctionnalité
Difficile à tester
8© Copyright Pyxis Technologies
Le sentiment qui domine en moi ?
La peur
9© Copyright Pyxis Technologies
Quelle fonctionnalité ?
Envoi un message si le destinataire est en ligne
10© Copyright Pyxis Technologies
Quelles dépendances ?
JID
Message
MessageBuilder
XMPPServiceFactory
Presence
SendResponse
11© Copyright Pyxis Technologies
Fonctionnalité & Dépendances
Envoi un message si le destinataire est en ligne
JID
Message
MessageBuilder
XMPPServiceFactory
Presence
SendResponse
12© Copyright Pyxis Technologies
Les tests que je souhaite avoir
Si le destinataire est en ligne, le message est envoyé
Si le destinataire n'est pas en ligne, le message n'est pas envoyé
13© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
On veut donc pouvoir paramétrer notre Sender avec un XMPPService
Mais attention : en prod on veut toujours avoir celui de Google
14© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
On veut donc pouvoir paramétrer notre Sender
Mais attention : en prod on veut toujours avoir celui de Google
15© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
On veut donc pouvoir paramétrer notre Sender
Mais attention : en prod on veut toujours avoir celui de Google
16© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
On veut donc pouvoir paramétrer notre Sender
Mais attention : en prod on veut toujours avoir celui de Google
17© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
18© Copyright Pyxis Technologies
Destinataire hors ligne → pas d'envoi
19© Copyright Pyxis Technologies
Les tests documentent
20© Copyright Pyxis Technologies
Et on a toujours le choix de l'outil
21© Copyright Pyxis Technologies
...un poil plus de tuyauterie
22© Copyright Pyxis Technologies
:)
23© Copyright Pyxis Technologies
« Bridging the gap between Business and IT »Eric Laramée
24© Copyright Pyxis Technologies
Les tests donnent le courage de refactorer
25© Copyright Pyxis Technologies
Etc...
Extraire les paramètres ?
Injecter un builder ?
Primitive obsesion
Introduce Param ?
...
26© Copyright Pyxis Technologies
Merci
Question ?