Practice: Object Calisthenics + TDD + Advent of Code
December 18th, 2020
Goal
Practice while doing advent of code exercises.
Object Calisthenics
TDD
refactoring
What is 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
refactor to patterns
make the change easy (then make the easy change in red/green)
tests as documentation
more:
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
This post was referenced in:
- Journal: Object Calisthenics + TDD + Advent of Code - day 1
- Journal: Object Calisthenics + TDD + Advent of Code - day 1
- Practice: constrain with error messages to slice stories
- Journal: Object Calisthenics + TDD + Advent of Code - day 4
- Journal: Object Calisthenics + TDD + Advent of Code - day 2
- Retro: Object Calisthenics + TDD + Advent of Code - day 2