Dealing with software dependencies
summary
Explains when dependencies are actual problems and when they’re just words, demonstrates concrete fixes (forward declarations, pImpl, turning public includes into private, dependency inversion) and tools that find cycles and unreachable components. Shows cpp-dependencies and an interactive visualizer spindle that scan millions of lines in seconds, highlights a real edit (moving color files from graphics to util) that breaks a cycle, and argues C++20 modules reduce parsing cost but do not automatically eliminate unwanted dependencies.
AI-written summary · about
chapters (34)
- 0:00Introduction
- 1:38Table of content
- 2:19Dependency definition
- 3:12Direct vs Indirect
- 5:25Cyclic vs Acyclic
- 6:55Transitive closure
- 8:05Dependency types
- 16:14SOLID
- 17:11Single responsibility principle
- 17:48Interface segregation
- 18:50Dependency inversion
- 21:48Upsides
- 22:18Downsides
- 27:35Modules
- 28:47What's wrong with macros and #include ?
- 29:42Root problem
- 32:02Actual implementations
- 33:41Dependency glasses
- 35:08How to reduce dependencies
- 37:50Remove stale / unused dependencies
- 40:39Forward declarations
- 42:39Dependency Injection
- 43:38Invert (some) dependencies
- 46:03Why fix cyclic dependencies
- 49:39How to fix cyclic dependencies
- 49:53Code motion
- 50:24Split component
- 51:29Invert dependency
- 52:30Extract common component
- 53:19Extract driver
- 53:59Merge components
- 54:57Dependency visualization
- 57:21Cpp-dependencies output
- 58:38Spindel view








