[2024]Digital Global Overview Report 2024 Meltwater.pdf
TDD and S.O.L.I.D.; Two Ingredients For High Quality Software
1. TDD & S.O.L.I.D.Two ingredients for high-quality software Dennis Doomen dennis.doomen@avivasolutions.nl
2. About Me Principal Consultant at Aviva Solutions 35 years 6-month daughter 12 years of experience C++ origins On .NET since 2001
3. Agenda About quality Test Driven Development & S.O.L.I.D Demos & examples Guidelines to get started
4. 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
5. How? Use coding guidelines Apply common design principles Test Driven Development Refactoring Use Design Patterns Pair Programming Socialize design & architecture
6. 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
9. What you have seen TDD Arrange-Act-Assert Red-Green-Refactor Mocking Intention revealing tests Single Responsibility Principle Dependency Inversion Principles
10. Phases of unit testing Refusing Getting too excited Testing everything! Integration testing Discover mocking Mocking everything Becoming effective
11. Example Types of attendees Open Closed Principle Dependency Inversion Principle
15. What you have seen Open Closed Principle Single Responsibility Principle Dependency Inversion Principle Chain of Responsibility Pattern Factory Method Pattern
26. 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)
27. 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)
28. 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