SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
Dojo TDD & OCP
Open close principle with FizzBuzz kata
Sylvain Bonnard @CharlesBouttaz
TDD : Red, Green, Refactor...
TDD : les intérêts
● Test first : Qu’est ce que je dois faire ?
● Meilleur code & meilleur design *
○ Unitaire -> découplé
○ Design émergent : moins d’over engineering
● Est ce que j’ai cassé quelque chose ?
○ Moins de debug
○ Plus d’excuses pour ne pas améliorer le code
Notre startup : FizzBuzz!
- Le programme prend un chiffre en entrée et l’affiche sur la console
- Si le nombre est un multiple de 3 on affiche : Fizz!
- Si le nombre est un multiple de 5 on affiche : Buzz!
- Si le nombre est un multiple de 3 et de 5 on affiche : FizzBuzz!
Limite de l’approche if
On fait un carton sur Facebook : Champagne :)
Le marketing veut intégrer 15 nouveaux mot-clés :(
Open/Closed Principle
- SOLID
- “Software entities (classes, modules, functions, etc.) should be open for extension,
but closed for modification”
- Changer de comportement sans changer son code source
Changer de comportement sans changer le code source
Refactoring préparatoire
Nouveau workflow TDD & OCP
Nouvelle règle : Si le nombre est un multiple de 7 on affiche : Bang!
On commence par écrire un test rouge
Est ce que je peux ajouter la nouvelle fonctionnalité uniquement en changeant le code
de construction (constructeur / factory) ?
● oui -> j’ajoute ma feature
● non -> je refactor jusqu’a pouvoir ajouter ma fonctionnalité sans violer OCP
Règles supplémentaires
● Boum (%10)
● Mode easy (fizzbuzz) / medium (FB+Bang) / hard (FB+Bang+Boum)
● Affichage : Si on a que Fizz on affiche FIZZ
Conclusion
Rappels :
- Avant de coder, on refactor pour rendre l’implémentation plus facile
- Avant de “refactorer”, reflechir et planifier
- Toujours refactorer avec des tests verts
- Si vous vous trompez, ctrl-Z jusqu’à l’état vert
- Attention au design prématuré : en créant des extensions on augmente la
complexité
Sources
- http://fr.slideshare.net/xpmatteo/20101125-ocpxpday

Contenu connexe

En vedette

Know your genre
Know your genre Know your genre
Know your genre E_1
 
Presentacion fundamentos del derecho empresarial fuentes y fundamentos del ...
Presentacion fundamentos del derecho empresarial   fuentes y fundamentos del ...Presentacion fundamentos del derecho empresarial   fuentes y fundamentos del ...
Presentacion fundamentos del derecho empresarial fuentes y fundamentos del ...ACRF15
 
SDaleWomensActivewearPortfolio2
SDaleWomensActivewearPortfolio2SDaleWomensActivewearPortfolio2
SDaleWomensActivewearPortfolio2Sara Dale
 
Warehouseman cover letter
Warehouseman cover letterWarehouseman cover letter
Warehouseman cover letterbenjasanders
 
Presentacion aconcagua saia 2
Presentacion aconcagua   saia 2Presentacion aconcagua   saia 2
Presentacion aconcagua saia 2ACRF15
 
SANJAY_ALAHAM_Resume_01.08.16
SANJAY_ALAHAM_Resume_01.08.16SANJAY_ALAHAM_Resume_01.08.16
SANJAY_ALAHAM_Resume_01.08.16Sanjay Alaham
 
Dossier de l'obra teatral "La nit de Helver"
Dossier de l'obra teatral "La nit de Helver"Dossier de l'obra teatral "La nit de Helver"
Dossier de l'obra teatral "La nit de Helver"Blanca Ramos Barluenga
 
Commodities weekly, market tracking 04032014
Commodities weekly, market tracking 04032014Commodities weekly, market tracking 04032014
Commodities weekly, market tracking 04032014Melissa Lu
 
How to Get Back a Ex Girlfriend Against All Odds
How to Get Back a Ex Girlfriend Against All OddsHow to Get Back a Ex Girlfriend Against All Odds
How to Get Back a Ex Girlfriend Against All OddsKokoshungsan Ltd.
 

En vedette (12)

Know your genre
Know your genre Know your genre
Know your genre
 
Presentacion fundamentos del derecho empresarial fuentes y fundamentos del ...
Presentacion fundamentos del derecho empresarial   fuentes y fundamentos del ...Presentacion fundamentos del derecho empresarial   fuentes y fundamentos del ...
Presentacion fundamentos del derecho empresarial fuentes y fundamentos del ...
 
SDaleWomensActivewearPortfolio2
SDaleWomensActivewearPortfolio2SDaleWomensActivewearPortfolio2
SDaleWomensActivewearPortfolio2
 
Warehouseman cover letter
Warehouseman cover letterWarehouseman cover letter
Warehouseman cover letter
 
GraduKaikki
GraduKaikkiGraduKaikki
GraduKaikki
 
Morgan, Willie
Morgan, WillieMorgan, Willie
Morgan, Willie
 
Presentacion aconcagua saia 2
Presentacion aconcagua   saia 2Presentacion aconcagua   saia 2
Presentacion aconcagua saia 2
 
SANJAY_ALAHAM_Resume_01.08.16
SANJAY_ALAHAM_Resume_01.08.16SANJAY_ALAHAM_Resume_01.08.16
SANJAY_ALAHAM_Resume_01.08.16
 
Brochure Podere Fedespina
Brochure Podere FedespinaBrochure Podere Fedespina
Brochure Podere Fedespina
 
Dossier de l'obra teatral "La nit de Helver"
Dossier de l'obra teatral "La nit de Helver"Dossier de l'obra teatral "La nit de Helver"
Dossier de l'obra teatral "La nit de Helver"
 
Commodities weekly, market tracking 04032014
Commodities weekly, market tracking 04032014Commodities weekly, market tracking 04032014
Commodities weekly, market tracking 04032014
 
How to Get Back a Ex Girlfriend Against All Odds
How to Get Back a Ex Girlfriend Against All OddsHow to Get Back a Ex Girlfriend Against All Odds
How to Get Back a Ex Girlfriend Against All Odds
 

Similaire à CARA - Coding Dojo TDD & Open Closed Principle

Geek Time Juillet 2017 : TDD coté Front/JS
Geek Time Juillet 2017 : TDD coté Front/JSGeek Time Juillet 2017 : TDD coté Front/JS
Geek Time Juillet 2017 : TDD coté Front/JSOLBATI
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tddEric Hogue
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptxGuillaume Saint Etienne
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Jonathan Martin
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerEric Hogue
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Mesurez votre libido agile
Mesurez votre libido agileMesurez votre libido agile
Mesurez votre libido agileNicholas Suter
 
Tester votre libido Agile
Tester votre libido AgileTester votre libido Agile
Tester votre libido AgileCellenza
 
De legacy au tdd - Agile pays basque
De legacy au tdd  - Agile pays basqueDe legacy au tdd  - Agile pays basque
De legacy au tdd - Agile pays basquemartinsson
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-techniqueFabrice Aimetti
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-techniqueFabrice Aimetti
 

Similaire à CARA - Coding Dojo TDD & Open Closed Principle (20)

Geek Time Juillet 2017 : TDD coté Front/JS
Geek Time Juillet 2017 : TDD coté Front/JSGeek Time Juillet 2017 : TDD coté Front/JS
Geek Time Juillet 2017 : TDD coté Front/JS
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tdd
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
Pdo
PdoPdo
Pdo
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Coder propre !
Coder propre !Coder propre !
Coder propre !
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Au secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguerAu secours, mon application est brisée - Ou comment déboguer
Au secours, mon application est brisée - Ou comment déboguer
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Mesurez votre libido agile
Mesurez votre libido agileMesurez votre libido agile
Mesurez votre libido agile
 
Tester votre libido Agile
Tester votre libido AgileTester votre libido Agile
Tester votre libido Agile
 
De legacy au tdd - Agile pays basque
De legacy au tdd  - Agile pays basqueDe legacy au tdd  - Agile pays basque
De legacy au tdd - Agile pays basque
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-technique
 
La solution-a-la-dette-technique
La solution-a-la-dette-techniqueLa solution-a-la-dette-technique
La solution-a-la-dette-technique
 

CARA - Coding Dojo TDD & Open Closed Principle

  • 1. Dojo TDD & OCP Open close principle with FizzBuzz kata Sylvain Bonnard @CharlesBouttaz
  • 2. TDD : Red, Green, Refactor...
  • 3. TDD : les intérêts ● Test first : Qu’est ce que je dois faire ? ● Meilleur code & meilleur design * ○ Unitaire -> découplé ○ Design émergent : moins d’over engineering ● Est ce que j’ai cassé quelque chose ? ○ Moins de debug ○ Plus d’excuses pour ne pas améliorer le code
  • 4. Notre startup : FizzBuzz! - Le programme prend un chiffre en entrée et l’affiche sur la console - Si le nombre est un multiple de 3 on affiche : Fizz! - Si le nombre est un multiple de 5 on affiche : Buzz! - Si le nombre est un multiple de 3 et de 5 on affiche : FizzBuzz!
  • 5. Limite de l’approche if On fait un carton sur Facebook : Champagne :) Le marketing veut intégrer 15 nouveaux mot-clés :(
  • 6.
  • 7. Open/Closed Principle - SOLID - “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification” - Changer de comportement sans changer son code source
  • 8. Changer de comportement sans changer le code source
  • 9.
  • 11. Nouveau workflow TDD & OCP Nouvelle règle : Si le nombre est un multiple de 7 on affiche : Bang! On commence par écrire un test rouge Est ce que je peux ajouter la nouvelle fonctionnalité uniquement en changeant le code de construction (constructeur / factory) ? ● oui -> j’ajoute ma feature ● non -> je refactor jusqu’a pouvoir ajouter ma fonctionnalité sans violer OCP
  • 12. Règles supplémentaires ● Boum (%10) ● Mode easy (fizzbuzz) / medium (FB+Bang) / hard (FB+Bang+Boum) ● Affichage : Si on a que Fizz on affiche FIZZ
  • 13. Conclusion Rappels : - Avant de coder, on refactor pour rendre l’implémentation plus facile - Avant de “refactorer”, reflechir et planifier - Toujours refactorer avec des tests verts - Si vous vous trompez, ctrl-Z jusqu’à l’état vert - Attention au design prématuré : en créant des extensions on augmente la complexité