We know we should be testing our code but what are the benefits of testing? Assurances that we can rapidly make changes to the code and ensure functionality is still kept intact.
Well, what if there was more than just code security that practising testing could give us.
I believe that by thinking about Objects and going back to the fundamentals of OOP ( Object Orientated Programming ) and thinking about how objects can **communicate** with each other we can design better applications adhering to **SRP** ( Single responsibility Principle ), **SOLID** and **DRY** and still retain a well tested and more verbosely documented system.
By exploring concepts from OOP, DDD, BDD and TDD I will show that we can extract business domain code and encapsulate this into meaningful objects that are more testable, maintainable and showcase best OOP practices.