The October 2018 meetup was held in Finnegan & Son in Newry. Organiser Joe McKevitt guided attendees through exercises in refactoring legacy could with a test-driven development approach.
Links
Introduction into http://www.cyber-dojo.org
Session id – 4bPhxc
Teams used on the night – join team , lion, zebra, buffalo, rabbit, eagle, kingfisher
Speed car Kata – TirePressureMonitoringSystem exercise
https://github.com/emilybache/Racing-Car-Katas
Article explaining the merit of TDD, refactoring and good design principles (including sample solutions for the speed car kata)
https://github.com/lucaminudel/TDDwithMockObjectsAndDesignPrinciples
Good examples of other submissions
https://github.com/trikitrok/tire_pressure_monitoring_system_20160505/tree/master/src/main/java/tddmicroexercises/tirepressuremonitoringsystem
Usage of builders (Test builders)
https://github.com/trikitrok/tire_pressure_monitoring_system_20160505/blob/live_version_magento_20160505/src/test/java/tddmicroexercises/tirepressuremonitoringsystem/tests/helpers/AlarmBuilder.java
Links/References on Test driven development (TDD)
TDD does not drive towards good design, it drives away from a bad design. If you know what good design is, the result is a better design – Nat Pryce
TDD doesn’t drive good design. TDD gives you immediate feedback about what is likely to be bad design – Kent Beck
Michael Feathers: writing tests is another way to look the code and locally understand it and reuse it, and that is the same goal of good OO design. This is the reason of the deep synergy between testability and good design.
Jay Fields – Working Effectively with Unit Tests
https://leanpub.com/wewut
Podcast interview with Jay Fields
http://www.se-radio.net/2016/05/se-radio-episode-256-jay-fields-on-working-effectively-with-unit-tests/
Solid principles
References:
https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
Recommended reading
Working Effectively with Legacy Code
growing object-oriented software guided by tests
http://www.growing-object-oriented-software.com/