Too Long; Didn't Read
The code smells are just hints of something that might be wrong. They are not rigid rules. Use interfaces or traits (if available) to solve problems. Use Dependency Injection (if possible) or use interfaces (if not) The code smell is not bad luck, but it's just hints that something is wrong. The smell of code smells is a symptom of a problem in software development. We can call and invoke classes any time. We can't fake or mock this method since it always expects an instance of MyCollection to be called.