Change Coupling describes which pieces of code actually change together over time, exposing real dependencies that static structure and filenames hide. It explains why small fixes sometimes touch many files: hidden technical and business constraints - for example compliance logging, country-specific fee data, merchant agreement safeguards, or database layout - create invisible links that force coordinated edits. Change Coupling is one of several coupling types (physical, logical, temporal, data, control) but uniquely requires historical change data to detect. The point is sense-making, not chasing a perfect metric: some coupling is necessary, and understanding where code naturally groups or resists grouping reduces cognitive load and surprise during development.
A simple physical-vs-change 2x2 gives pragmatic guidance: consolidate code that changes together but lives apart, split code that lives together but rarely changes together, and monitor symmetric areas. Real-world fixes are rarely solved by architectural slogans - event-driven designs, microservices, extra interfaces, or obsessing over ideal domain boundaries often preserve or shift coupling rather than remove it. Effective responses extract or inject the shared causes of change (for example isolating business rules via dependency inversion), reorganize only where trade-offs improve maintainability, and use change-coupling analysis to reveal the forces shaping sensible, context-aware refactoring rather than to mandate a single pattern.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.