Knowledge-base
  • Home
  • Samman Technical Coaching
  • Software craftsmanship
    • Practices
      • Pair Programming
      • Code Review
      • Co-designs
      • Design sessions
      • Interview Domain Experts
      • Dev ethics
    • The Software Craftsman
    • Egoless Crafting
    • Technical debt workshop
    • Functional Programming made easy in C# with Language-ext
    • F# for OO programmers
    • Domain Modeling Made Functional
    • Testing
      • Clean Tests
      • Improve the design and testing of your micro-services through CDC Tests
        • CDC testing made simple with Pact
        • Pact broker : the missing piece of your Consumer-Driven Contract approach
      • Improve your test quality with Mutation testing
      • How to name our Unit Tests
      • How to write better assertions
    • Katas
      • TDD
        • Stack kata
        • Fizzbuzz
        • Outside-in TDD (London Style)
      • Improve your software quality with Property-Based Testing
        • A journey to Property-Based Testing
      • Clean Code
      • Clean Architecture
      • Write S.O.L.I.D code
      • Mocking
      • Gilded Rose (Approval Testing)
      • Mikado method
        • Mikado kata
      • Pure functions
      • Theatrical players refactoring Kata
        • Let's refactor (OOP style)
        • Let's refactor (FP style)
      • Functional Programming made easy in Java & C#
      • Refactoring journey
      • Refactoring du Bouchonnois
        • 1) Se faire une idée du code
        • 2) "Treat warnings as errors"
        • 3) Let's kill some mutants
        • 4) Améliorer la lisibilité des tests
        • 5) "Approve Everything"
        • 6) Définir des propriétés
        • 7) Tests d'architecture
        • 8) Use Cases
        • 9) Tell Don't Ask
        • 10) "Avoid Primitives" - Commands
        • 11) "Avoid Exceptions"
        • 12) "Event Sourcing"
    • Software Design X-Rays
      • Workshop
    • The Programmer's Brain
      • How to read code better
  • Software Architecture
    • Fundamentals of Software Architecture
    • Aligning Product & Software Design
    • DDD re-distilled
    • Test your architecture with Archunit
    • NoSQL
  • Agile coaching
    • How to run a Community of Practices (COP)
    • The developers — the forgotten of agility
      • The secrets to re-on-board the devs in agility
    • Coaching toolbox
      • Echelle
      • Learning expedition
    • How to improve Team Decision making ?
      • Decision Making Principles and Practices
    • Learning 3.0
    • Retrospectives
      • Back to the Future
      • Mission Impossible
      • Movie themes
      • Rétro dont vous êtes le héros
      • Sad/Mad/Glad
      • Speed boat
      • Star wars theme
      • Story cubes
    • Technical Agile Coaching with the Samman Method
    • Xanpan - a team centric agile method story
    • XTREM WATCH — Découvrez la puissance de la veille collective
    • Become a better speaker through peer feedback
    • Project-to-Product Principles
  • Leadership
    • Bref. J'ai pris une tarte dans la gueule (et ça fait extrêmement de bien)
    • Forward Summit 2020
    • Learn leadership from the Navy SEALs
    • Learn to lead and help your team(s) to be successful
    • Towards a learning organization and beyond
    • Leadership is language
  • Serious games
    • My serious games
    • Libérez vos entretiens d’embauche avec la gamification
    • How to create a game
    • How to debrief a game ?
    • Lego Serious Play (LSP)
      • LSP in your job interviews
  • Xtrem Reading
    • Cultivate Team Learning with Xtrem Reading
    • My Book Infographics
    • How to make book infographics
    • En route vers l’apprenance avec Xtrem Reading
    • Resources
      • Book notes
        • Agile People: A Radical Approach for HR & Managers
        • Agile testing : A Practical Guide for Testers and Agile Teams
        • Boite à outils de l'intelligence émotionnelle
        • Building a better business using Lego Serious Play method
        • Building evolutionary architectures
        • Code that fits in your head
        • Culture Agile
        • Culture is everything
        • Domain-Driven Design: The First 15 Years
        • Dynamic Reteaming - The Art and Wisdom of Changing Teams
        • How to avoid a Climate Disaster
        • La liberté du commandement
        • Réaliser ses rêves, ça s'apprend
        • Refactoring at Scale
        • Succeeding with OKRs in Agile
        • Team Topologies
        • The Good Life
        • Tu fais quoi dans la vie
        • Who Does What By How Much?
  • My Activity
    • Retour sur mon année 2020
Powered by GitBook
On this page
  • Cloner le code
  • Le contexte
  • Example Mapping
  • Facilitation
  • Pré-requis
  • Guide
  • Objectifs pédagogiques
  • Proposition de solution

Was this helpful?

  1. Software craftsmanship
  2. Katas

Refactoring du Bouchonnois

Kata de refactoring pour apprendre des techniques telles que Property-Based Testing, Approval Testing, Strangler, Functional Programming, ....

PreviousRefactoring journeyNext1) Se faire une idée du code

Last updated 1 year ago

Was this helpful?

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

Cloner le code

Le contexte

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.

Example Mapping

Voici l'Example Mapping qui a servi d'alignement pour développer ce système.

Facilitation

Pré-requis

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

Guide

Chaque étape comprend :

  • un "guide" de facilitation

  • une proposition de solution "étape par étape"

1 branche / étape avec le code source associé

Objectifs pédagogiques

À 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 🤩

Proposition de solution

Afin d'améliorer le code on te propose de suivre les étapes ci-dessous :

Le kata est disponible sur github .

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 .

Version PDF disponible .

ici
ici
ici
1) Se faire une idée du code
2) "Treat warnings as errors"
3) Let's kill some mutants
4) Améliorer la lisibilité des tests
5) "Approve Everything"
6) Définir des propriétés
7) Tests d'architecture
8) Use Cases
9) Tell Don't Ask
10) "Avoid Primitives" - Commands
11) "Avoid Exceptions"
12) "Event Sourcing"
Example Mapping du Bouchonnois