11.4. Alternatives to designing for testability
It’s interesting to look outside the box at other languages to see other ways of working.
In dynamic languages such as Ruby or Smalltalk, the code is inherently testable because you can replace anything and everything dynamically at runtime. In such a language, you can design the way you want without having to worry about testability. You don’t need an interface in order to replace something, and you don’t need to make something public to override it. You can even change the behavior of core types dynamically, and no one will yell at you or tell you that you can’t compile.
In a world where everything is testable, do you still design for testability? The expected answer is, of course, no. In that ...