Refactoring du Bouchonnois
Kata de refactoring pour apprendre des techniques telles que Property-Based Testing, Approval Testing, Strangler, Functional Programming, ....
Last updated
Kata de refactoring pour apprendre des techniques telles que Property-Based Testing, Approval Testing, Strangler, Functional Programming, ....
Last updated
Ce kata a pour objectif de s'exercer au refactoring sur un code existant afin de :
Identifier certains smells
dans notre code
Comprendre quelles pratiques et/ou outils peuvent nous aider pour surpasser ces smells
Pratiquer dans 1 environnement safe
en dehors de son code de production
Le kata est disponible sur github ici.
Nos vaillants chasseurs du Bouchonnois ont besoin de pouvoir gérer leurs parties de chasse.
Ils ont commencé à faire développer 1 système de gestion par l'entreprise Toshiba
mais ne sont pas satisfaits.
L'entreprise leur parle d'une soit-disante dette technique
qui les ralentit dans le développement de nouvelles features...
Les chasseurs comptent sur nous pour améliorer la situation.
Ils ont fait quelques ateliers avec Toshiba
et ont réussi à clarifier ce qui est attendu du système. Pour ce faire, ils ont utilisé le format Example Mapping
à découvrir ici.
Voici l'Example Mapping qui a servi d'alignement pour développer ce système.
Version PDF disponible ici.
Le code est disponible en .NET 7
.
Voici la liste des packages utilisés :
xUnit
FluentAssertions
Verify.xUnit
FSCheck
TngTech.ArchUnitNET.xUnit
LanguageExt.Core
FluentAssertions.LanguageExt
Chaque étape comprend :
un "guide" de facilitation
une proposition de solution "étape par étape"
1 branche / étape avec le code source associé
À travers ces différentes étapes j'ai essayé d'introduire les sujets suivants :
Example Mapping
Static Code Analysis / Linter
Treat Warnings as Errors
Mutation Testing
Test Data Builders
Approval Testing
Automated Refactoring
Property-Based Testing
Tests d'Architecture
Test-Driven Development
Clean Architecture
Domain Driven Design
Tell Don't Ask
Functional Programming
Avoid Primitives
Avoid Exceptions
Architecture Decision Records
Event Sourcing
...
Bon voyage 🤩
Afin d'améliorer le code on te propose de suivre les étapes ci-dessous :
1) Se faire une idée du code2) "Treat warnings as errors"3) Let's kill some mutants4) Améliorer la lisibilité des tests5) "Approve Everything"6) Définir des propriétés7) Tests d'architecture8) Use Cases9) Tell Don't Ask10) "Avoid Primitives" - Commands11) "Avoid Exceptions"12) "Event Sourcing"