I would enlist here the list of articles which explains why DI is important in designing software today satisfying a few goals like
- Code management
- System learning curve / Ambiguity Management
- API Dependency management
- Application Life Cycle
API dependency management is hard, really hard. It’s harder than library dependency management, it’s harder than deployment dependency management, it’s harder than any kind of dependency management in software engineering. This is because it’s very easy to create API’s which hides their dependencies by natural habit, and this practice is pervasive, even in the platforms I designed before. I am lucky to run into some great articles on it and I would recommend every developer should have some time to read them.
1. Learn about APIs’ being “pathological liars”
It really explains how we make EVIL APIs everyday. Though it’s written with Singletons, the same problems defined exists outside Singletons, too. What you need to know, must not be hidden! What you need to know must be created as a injectable and fungible object.
2. DI can be a soul partner for your unit testing
The more we are progressing, the more unit test are becoming important. If you are concerned about a good code coverage, you probably already know why DI is too important.
to be coninuted….
//3. DI can give important insights of a running application.
//4. Managing and monitoring global objects
//5. Proper object construction
//6. Systematic Application Startup & Shutdown