TDD and S.O.L.I.D.; Two Ingredients For High Quality Software
Upcoming SlideShare
Loading in...5
×
 

TDD and S.O.L.I.D.; Two Ingredients For High Quality Software

on

  • 4,211 views

 

Statistics

Views

Total Views
4,211
Views on SlideShare
4,105
Embed Views
106

Actions

Likes
1
Downloads
54
Comments
0

3 Embeds 106

http://www.dennisdoomen.net 91
http://www.linkedin.com 14
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 and S.O.L.I.D.; Two Ingredients For High Quality Software TDD and S.O.L.I.D.; Two Ingredients For High Quality Software Presentation Transcript

  • TDD & S.O.L.I.D.Two ingredients for high-quality software
    Dennis Doomen
    dennis.doomen@avivasolutions.nl
  • 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
  • Demo
    Attendee registration
    TDDSingle Reponsibility Principle
    Dependency Inversion Principle
  • What you have seen
    TDD
    Arrange-Act-Assert
    Red-Green-Refactor
    Mocking
    Intention revealing tests
    Single Responsibility Principle
    Dependency Inversion Principles
  • Phases of unit testing
    Refusing
    Getting too excited
    Testing everything!
    Integration testing
    Discover mocking
    Mocking everything
    Becoming effective
  • Example
    Types of attendees
    Open Closed Principle
    Dependency Inversion Principle
  • Naive Solution
  • Better Solution
  • Best Solution
  • What you have seen
    Open Closed Principle
    Single Responsibility Principle
    Dependency Inversion Principle
    Chain of Responsibility Pattern
    Factory Method Pattern
  • Example
    Billing
    Liskov Substitution Principle
  • Naive Solution
  • Better Solution
    new EmployeeBuilder().Build() ??
  • Best Solution
  • What you have seen
    Liskov Substition Principle
    Single Responsibility Principle
  • Example
    Event listening
    Interface seggregation
  • Naive Solution
  • Better Solution
  • Best Solution
  • What you have seen
    Interface Seggregation
  • 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
  • Q&A
    Emaildennis.doomen@avivasolutions.nl
    Blogwww.dennisdoomen.net
    Twitterwww.twitter.com/dennisdoomen