Showing posts with label KataCast. Show all posts
Showing posts with label KataCast. Show all posts

Thursday, July 14, 2016

Kata: Parrot Refactoring in Java (recorded)

I've recorded myself doing the Parrot Refactoring kata in order to be able to later watch me and detect problems to correct.

This is the recording of what I did: If you decide to watch it, please do it at 2x speed (I still write slowly).

These are the commits after every refactoring step.

You can see the code in this GitHub repository.

Monday, June 6, 2016

Kata: Tire Pressure Monitoring System in Java (recorded)

I've recorded myself doing the Tire Pressure Monitoring System refactoring kata in order to be able to later watch me and detect problems to correct.

This is the recording of what I did: If you decide to watch it, please do it at 2x speed (I still write slowly).

These are the commits after every refactoring step.

You can see the code in this GitHub repository.

Sunday, May 29, 2016

Kata: Bank Account in Java (recorded)

I've recorded myself using outside-in TDD to code the Printing Account Statement subset of the Bank Account kata in Java using jMock, in order to be able to later watch me and detect problems to correct.

This is the recording of what I did: If you decide to watch it, please do it at 2x speed (I still write slowly).

These are the commits after each green and every refactoring step.

You can see the code in this GitHub repository.

I recently did another version of this kata.

Friday, May 20, 2016

Kata: Brownish Greenfield Gilded Rose in Java (recorded)

I've recorded myself using TDD to code the Brownish Greenfield Gilded Rose kata in order to be able to later watch me and detect problems to correct.

This is the recording of what I did: If you decide to watch it, please do it at 2x speed (I still write slowly).

These are the commits after each green and every refactoring step.

You can see the code in this GitHub repository.

I also did this kata in JavaScript last week.

Saturday, April 30, 2016

Kata: Mars Rover in Java (recorded)

I've recorded myself using TDD to code the Mars Rover kata in order to be able to later watch me and detect problems to correct.

This is the recording of what I've done so far (all the possible movements of the rover): If you decide to watch it, please do it at 2x speed (I still write slowly).

These are the commits after each green and every refactoring step.

You can see the code in the using_java_enum branch of this GitHub repository.

Thursday, April 17, 2014

Interesting KataCast: "Clojure TDD demo (Robozzle)"

I've just watched this great explained katacast by Brian Marick

The top-down style Marick uses to grow his code through TDD reminds me a lot of how Gregor Kiczales worked through the example programs in Racket of his Introduction to Systematic Program Design - Part 1 Coursera course that I took a while ago.

The difference between the two processes is basically in the tooling, because Midje allows Marick to "stub" the results of helper functions so he can get feedback about his top functions from the very beginning whereas in Kiczales' examples he had to wait until all the helpers were working to see the top functions tests pass.

Apart from that they use the same top-down approach.

Saturday, March 22, 2014

Sunday, May 26, 2013

Kata: "Birthday Greetings"

@CoGaNic and I have done the Birthday Greetings kata.
This kata is a simple refactoring exercise by Matteo Vaccari that is meant to teach something about dependency inversion and dependency injection. You can download the kata initial code from here.

We refactored it to decouple the domain objects from the file system and email sending code using the ports and adapters architecture as the exercise suggested. You can see the refactoring result on GitHub.

We think there's still room for improvement in the adapters code, but we are satisfied with how we manage to eliminate the initial coupling between domain objects and the infrastructure classes used to read files and send emails. Now the domain objects don't know anything about them.

All in all, it's been a great exercise. We've thought about dependency inversion and dependency injection (this great article by Brett L. Suchert helped us a lot: DIP in the wild) and clarified many doubts we had about the ports and adapters architecture, also known as, hexagonal architecture.

PS: Some time ago I posted some useful links about the ports and adapters architecture.

----------------------------

Update:
I revisited the kata some time after this post, recorded a screencast to document the refactoring process and wrote a new post about it.
Check it here.