My talk given at UtahJSConf 2013

Do you dread writing tests? Are you frustrated with un-testable code? Wish you had confidence in your application?

What about “no pain, no gain”? Come learn design principles that will give you confidence in your code—without the pain.

Designing for testability means adhering to sound design principles. A core benefit of solid design is insight into the internal state and activities of your program. “Testable” doesn’t mean you can easily achieve 100% code coverage—it means you can easily verify you’ve created the right program and then validate your program’s correctness.

Learn the What, Why, and How of:

  • Abstraction
  • Decomposition
  • Design by Contract
  • Law of Demeter
  • Orthogonality
  • Single Responsibility
  • DRY
  • Logging

Beginners welcome. A must for intermediates. A great refresher for all.

Designing for Testability