Goal Practice while doing advent of code exercises.
- Object Calisthenics
- TDD
- refactoring
What is Object Calisthenics**?** Model: Object Calisthenics
Why Object Calisthenics**?** Code written in this style, should be
- easier to change
- easier to understand
- easier to test
- easier to reuse
This should cause code to be
- adaptable / agile / maintainable
What is TDD Red: write a failing test Green: in the quickest way possible Refactor:
- cleanup code
- cleanup tests
Refactor ideas
- remove duplication
- Model: 4 rules of simple design
- refactor to patterns
- make the change easy (then make the easy change in red/green)
- tests as documentation
more:
- Book: Test Driven Development: By Example - Kent Beck
- Book: Refactoring - Martin Fowler
- Book: Refactoring to Patterns - Joshua Kerievsky
- Article: Does TDD really lead to good design? - Sandro Mancuso
- Video: Structure and Interpretation of Test Cases - Kevlin Henney
Why TDD? Writing code in this way, should result in
- not over-engineered code
- well-tested code
- safe-to-refactor code
Why Advent of Code? These exercises always come in 2 parts:
- initial assignment
- a new twist in requirements causing the need to change
I expect to be able to experience ’easier to change’ in the second step.
Process Start an AoC assignment part 1
TDD:
- Red: write a failing test
- Green: in the quickest way possible
- Refactor:
- Object Calisthenics compliant
- (maybe) make the implementation broader by removing duplication
Finish part 1
Mini retro:
- How did it feel?
- What went well & should do more of?
Start part 2
TDD…
Finish part 2
Retro:
- Were my expectations correct??
- How did it feel?
- What went well & should do more of?
Expectations
- Object Calisthenics is sufficient for TDD’s Refactor step. No other refactors are needed.
- The change-over from part 1 to part 2 will be seamless, not breaking the flow of coding.
https://github.com/TjenWellens/advent-of-calisthenics Journal: Object Calisthenics + TDD + Advent of Code - day 1 Retro: Object Calisthenics + TDD + Advent of Code - day 1 Journal: Object Calisthenics + TDD + Advent of Code - day 2 Retro: Object Calisthenics + TDD + Advent of Code - day 2 Journal: Object Calisthenics + TDD + Advent of Code - day 4