PROVIDE YOU SESSION CODE AND NAME AS IT WAS DEFINED BY AGENDA OWNERS.WELCOME ATTENDEES. INTRODUCE YOURSELF AND YOUR SESSION.
PROVIDE 5 MIN BEFORE SESSION ENDS FOR Q&A.
TDD & S.O.L.I.D.Two ingredients for high-quality software Dennis Doomen firstname.lastname@example.org
About Me Principal Consultant at Aviva Solutions 35 years 6-month daughter 12 years of experience C++ origins On .NET since 2001
Agenda About quality Test Driven Development & S.O.L.I.D Demos & examples Guidelines to get started
What is quality? Or, how do you measure it?“I don't care howgoodyouthinkyour design is. If I can't walk in and write a test foranarbitrarymethod of yours in fiveminutes, itsnot as good as youthinkit is, and whetheryouknowitornot, you'repaying a pricefor it.”Michael Feathers, ObjectMentor
How? Use coding guidelines Apply common design principles Test Driven Development Refactoring Use Design Patterns Pair Programming Socialize design & architecture
Test Driven Development Is a design process Tests are your first users Tests can be your documentation If TDD hurts then you're doing it wrong
S.O.L.I.D. Single ResponsiblityPrinciple Open ClosedPrinciple LiskovSubstitutionPrinciple Interface SeggregationPrinciple DependencyInversionPrinciple
Getting started guidelines Test should be Small and focused Intention revealing Repeatable Have no side-effects Independent Test what you know now (and assemble the rest from those pieces)
Getting started guidelines Mocking Don't mock chatty interfaces Don't have more than 2-3 mocks per test Only mock your nearest neigbors Keep your tail short Isolate the ugly stuff Conform to SOLID (and other principles)
Resources xUnit Patternshttp://xunitpatterns.com/ Applying Domain Driven Design and Design Patternshttp://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202 Jeremy D. Millerhttp://codebetter.com/blogs/jeremy.miller/default.aspxhttp://msdn.microsoft.com/en-us/magazine/cc720886.aspx InfoQ Recommended TDD Tutorialshttp://www.infoq.com/news/2009/05/recommended-tdd-tutorials Los Techies S.O.L.I.D. Principles E-Bookhttp://www.lostechies.com/content/pablo_ebook.aspx C# 3.0 Coding Guidelineshttp://blog.avivasolutions.nl/archive/2009/03/06/new-coding-guidelines-for-c-3-0.aspx