One of the things that makes TDD difficult to apply on existing code (or just “legacy code”) is the dependencies that the object subject to test may have. The more “dependencies” the object has, the more difficult it will be to test it, almost for sure.
What makes things even harder is that usually most dependencies are incorrect, there is an unnecessary coupling between objects result of bad designs (yes, there are good designs and bad designs as there are good paintings and bad paintings, good music and bad music… being the definition of good and bad relative to a set of principles or rules. At least there is a design principle in software development that we all agree on that looks to maximize cohesion and minimize coupling. So the more unnecessary dependencies, the bigger the coupling, the worst the design is).
16 Feb 2012
object-design code-reuse smalltalk inheritance
When talking about Smalltalk, there is definitively an over use on the possibility to add messages to Object
class. It is so easy to do it, that people usually do it just to get something working fast, even if the coding is poor. There are a lot of messages (mainly #isXXX
messages) that do not belong to Object
and represent a bad design decision. Most of them are implemented there because they are “handy” and easily “reused”. For example #->
or #assert:
implemented in Squeak. Definitively not all objects should respond to them.
20 May 2009