New article: What Really Is TDD?
2015-05-18 14:29:12 GMT
Given the periodic discussions that appear about TDD, I felt the urge to put down my definite answer on what TDD is. You can read it here: http://www.alexbolboaca.ro/wordpress/my-take-on/what-is-really-tdd.
Here's the short version:
- Design is intentionally conceiving and giving form to artifacts that solve problems
- Computer code is such an artifact, therefore any piece of code that intentionally solves a problem is designed
- Therefore TDD is a method for obtaining design
- Good design means design that has certain qualities. The most common quality we seek today is changeability.
- TDD offers some built-in qualities: testability and improved mistake-proofing. The developer has to work to improve other qualities such as changeability. This is why practitioners use SOLID principles to guide their design decisions.
- Therefore the qualities of the design obtained through TDD largely depend on the skills of the designer
- When doing TDD, the developer designs before starting (eg. because using an MVC web framework) and all throughout the TDD cycles: when writing the test (pick class / method names, decide on types of classes to use etc), when implementing the code (variable names) and when refactoring.
- I propose that TDD is a method for incremental design, since the solution grows step by step. This also relates to problem solving, and the circle closes – because design means solving a problem.
I hope we can all build on this and have a clearer view on why we do what we do.
You received this message because you are subscribed to the Google Groups "software_craftsmanship" group.
To unsubscribe from this group and stop receiving emails from it, send an email to software_craftsmanship+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To post to this group, send email to software_craftsmanship-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Visit this group at http://groups.google.com/group/software_craftsmanship.
For more options, visit https://groups.google.com/d/optout.