Download - Refactoring piloté par les tests
![Page 1: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/1.jpg)
© Copyright Pyxis Technologies
Agile Days 2010Paris
Refactoring guidé par les tests
![Page 2: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/2.jpg)
2© Copyright Pyxis Technologies
Où étiez-vous le 10 novembre 2009 au soir ?
![Page 3: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/3.jpg)
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 :)
![Page 4: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/4.jpg)
4© Copyright Pyxis Technologies
Ok, Go !
![Page 5: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/5.jpg)
5© Copyright Pyxis Technologies
Snippet
![Page 6: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/6.jpg)
6© Copyright Pyxis Technologies
Cool… je copie / colle... :)
![Page 7: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/7.jpg)
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
![Page 8: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/8.jpg)
8© Copyright Pyxis Technologies
Le sentiment qui domine en moi ?
La peur
![Page 9: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/9.jpg)
9© Copyright Pyxis Technologies
Quelle fonctionnalité ?
Envoi un message si le destinataire est en ligne
![Page 10: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/10.jpg)
10© Copyright Pyxis Technologies
Quelles dépendances ?
JID
Message
MessageBuilder
XMPPServiceFactory
Presence
SendResponse
![Page 11: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/11.jpg)
11© Copyright Pyxis Technologies
Fonctionnalité & Dépendances
Envoi un message si le destinataire est en ligne
JID
Message
MessageBuilder
XMPPServiceFactory
Presence
SendResponse
![Page 12: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/12.jpg)
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é
![Page 13: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/13.jpg)
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
![Page 14: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/14.jpg)
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
![Page 15: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/15.jpg)
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
![Page 16: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/16.jpg)
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
![Page 17: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/17.jpg)
17© Copyright Pyxis Technologies
Destinataire en ligne → message envoyé
![Page 18: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/18.jpg)
18© Copyright Pyxis Technologies
Destinataire hors ligne → pas d'envoi
![Page 19: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/19.jpg)
19© Copyright Pyxis Technologies
Les tests documentent
![Page 20: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/20.jpg)
20© Copyright Pyxis Technologies
Et on a toujours le choix de l'outil
![Page 21: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/21.jpg)
21© Copyright Pyxis Technologies
...un poil plus de tuyauterie
![Page 22: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/22.jpg)
22© Copyright Pyxis Technologies
:)
![Page 23: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/23.jpg)
23© Copyright Pyxis Technologies
« Bridging the gap between Business and IT »Eric Laramée
![Page 24: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/24.jpg)
24© Copyright Pyxis Technologies
Les tests donnent le courage de refactorer
![Page 25: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/25.jpg)
25© Copyright Pyxis Technologies
Etc...
Extraire les paramètres ?
Injecter un builder ?
Primitive obsesion
Introduce Param ?
...
![Page 26: Refactoring piloté par les tests](https://reader033.vdocuments.us/reader033/viewer/2022051610/549f3120ac795938768b494d/html5/thumbnails/26.jpg)
26© Copyright Pyxis Technologies
Merci
Question ?