It's soon been a month where I have gone hardcore TDD. Everything I code at home and everything I code at work has been done using the three rules of TDD:
So, I have spent a lot of time putting existing code under test. Which is not always easy when it isn't designed to be easily testable to start with. At least, the parts where I am thinking about making changes has to be put under test.
Fortunately I have had some help by Michael Feather's book Working Effectively Legacy Code.
To make it even harder the code that I have been changing is involved in inter process communication and uses multiple threads, global static variables, and thread barriers in the form of Manual Reset Events. Phew! It has been a challenge.
Now onwards toward month number two!
- You are not allowed to write any production code unless it is to make a failing unit test pass.
- You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
- You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
So, I have spent a lot of time putting existing code under test. Which is not always easy when it isn't designed to be easily testable to start with. At least, the parts where I am thinking about making changes has to be put under test.
Fortunately I have had some help by Michael Feather's book Working Effectively Legacy Code.
To make it even harder the code that I have been changing is involved in inter process communication and uses multiple threads, global static variables, and thread barriers in the form of Manual Reset Events. Phew! It has been a challenge.
Now onwards toward month number two!
Spännande!
SvaraRaderaVerkar ha varit tufft! Hur tycker du att det har påverkat koden du ändrat i? Har den blivit bättre av att du infört tester? Har du fått ändra mycket? Lagt onödigt mycket tid på en liten ändring? Känns det värt det? Många frågor :)
Lycka till med månad två!
Kan vi inte ta en lunch snart?
Visst är det!
RaderaJag har fått ta till lite "fula knep" för att få en del av den befintliga koden testbar utan att riskera att förstöra något. Så vissa delar ser lite underliga ut efteråt. Här har jag dock valt att lita på Michael Feathers och det han skriver i sin bok "Working Effectively with Legacy Code", att det är värt att det ser lite knasigt ut ett tag för det kommer löna sig mångdubbelt på sikt. Men jag har inte behövt ändra så jättemycket och förhoppningsvis blir det lättare att ändra i just de delarna av koden nästa gång det behövs en ändring där.
Tyvärr är det väldigt mycket kod som saknar unittester så varje ändring just nu kräver ganska mycket jobb, det bör dock bli bättre och bättre med tiden :).
Angående lunch så absolut! Var är du stationerad nu för tiden?
Blir kul att följa din quest :)
RaderaJag sitter på Lindholmen, men vi kan ju mötas upp någonstans. Jag ringer imorgon!