# Katas

## Ressources

* <http://tddbuddy.com/>
* <https://codingdojo.org/KataCatalogue/>
* <https://katalyst.codurance.com/>
* <https://github.com/emilybache/>
* <https://kata-log.rocks/>
* Technical agile coaching materials : <https://sammancoaching.org/>
* [Code cop](http://blog.code-cop.org/p/my-code-katas.html)

## Refactoring

* Refactoring Journey : <https://ythirion.github.io/refactoring-journey/>
* Gilded rose : <https://github.com/emilybache/GildedRose-Refactoring-Kata>
* Theatrical players Kata : <https://github.com/ythirion/Theatrical-Players-Refactoring-Kata>
* Person-kata : <https://github.com/ythirion/person-kata>
* Untangled Conditionals kata : <https://github.com/tomphp/untangled-conditionals-kata>
  * Article : <https://cloudnative.ly/refactoring-untangling-conditionals-cc5693b8ec3c>
  * Video : [Untangled Conditionals Kata](https://www.youtube.com/watch?v=NWgY-0Qu4S4)

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MAffO8xa1ZWmgZvfeK2%2Fuploads%2FlkJyCZsVZYJqZdBg9dc8%2Ffile.png?alt=media)

* How to refactor legacy code : <https://github.com/sandromancuso/trip-service-kata>
  * Seam model : <https://understandlegacycode.com/blog/key-points-of-working-effectively-with-legacy-code/>
  * Video : <https://www.youtube.com/watch?v=_NnElPO5BU0>

### Patterns

* Strangler fig : <https://engineering.shopify.com/blogs/engineering/refactoring-legacy-code-strangler-fig-pattern>
* Branch by abstraction :
  * <https://engineering.shopify.com/blogs/engineering/refactoring-legacy-code-strangler-fig-pattern>
  * Billing refactoring kata : <https://github.com/bastiendavid/billing-refactoring-kata>

## Testing

### TDD

* Fizz Buzz : <https://katalyst.codurance.com/fizzbuzz>
* Leap Year : <https://katalyst.codurance.com/leap-year>
* Money problem : <https://github.com/ythirion/TDD-money-problem>
* Yahtzee : <https://codingdojo.org/kata/Yahtzee/>
* Roman Numerals : <https://katalyst.codurance.com/roman-numerals>
  * It's not a mathematical problem

### Outside-in TDD (London approach / mockist)

* Bank kata : <https://katalyst.codurance.com/bank>
* Hotel : <https://katalyst.codurance.com/corporate-hotel-booking>

### Approval Testing (Golden Master)

* Approval Testing kata in C# : <https://github.com/ythirion/approval-csharp-kata>
* Expense Report : <https://github.com/christianhujer/expensereport>
* Lift-kata : <http://coding-is-like-cooking.info/2020/04/how-to-develop-new-features-with-approval-testing-illustrated-with-the-lift-kata/>
* EnvironmentControllerKata : <https://github.com/emilybache/EnvironmentalControllerKata>
* Ugly trivia : <https://kata-log.rocks/ugly-trivia-kata>

{% content-ref url="code-katas/gilded-rose-approval-testing" %}
[gilded-rose-approval-testing](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/gilded-rose-approval-testing)
{% endcontent-ref %}

### Property Based Testing

* [A journey to Property-Based Testing](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/improve-your-software-quality-with-property-based-testing/a-journey-to-property-based-testing)

{% content-ref url="code-katas/improve-your-software-quality-with-property-based-testing" %}
[improve-your-software-quality-with-property-based-testing](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/improve-your-software-quality-with-property-based-testing)
{% endcontent-ref %}

* Enchanting : <https://katalyst.codurance.com/enchanting>

### TCR (Test && Commit || Revert)

* <https://github.com/ythirion/TcrKata>

### Mikado method

* <https://github.com/mikadomethod/kata-java>
* <https://github.com/murex/mikado-testbuilders-kata>
* <https://livebook.manning.com/book/the-mikado-method/chapter-1/69>

{% content-ref url="code-katas/mikado-method" %}
[mikado-method](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/mikado-method)
{% endcontent-ref %}

### Discover new libs

* Vavr : <https://github.com/ythirion/vavr-kata>
* Language-ext : <https://github.com/ythirion/language-ext-kata>
* Java to the future : <https://github.com/ythirion/java4toTheFuture>
* Pact : <https://github.com/ythirion/cdc-kata>

### Architecture

* Architecture Kata : <http://fundamentalsofsoftwarearchitecture.com/katas/list.html>
* DDD Katas by Nick Tune :
  * [Delivericious : Strategic Domain Driven Design Kata](https://medium.com/nick-tune-tech-strategy-blog/strategic-domain-driven-design-kata-delivericious-b114ca77163)
  * [Dreamland : DDD Kata](https://medium.com/nick-tune-tech-strategy-blog/strategic-domain-driven-design-kata-delivericious-b114ca77163)

{% content-ref url="code-katas/clean-architecture" %}
[clean-architecture](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/code-katas/clean-architecture)
{% endcontent-ref %}
