Comparison
Circular dependencyvsCoupling
Circular dependency
two modules import each other, and which one is initialised first decides whether it works.
Two or more components that depend on each other, directly or through a chain, so neither can be understood, built, tested or deployed without the other. It shows up as an import error, a null field during initialisation or a constructor that cannot be satisfied. The usual cure is to find the concept both of them actually need and extract it, or to invert one direction with an interface owned by the depender.
Full entry →Coupling
you changed one module and three tests in a directory you had never opened went red.
How much one part of a system has to know about another part to work. Every dependency is coupling and some of it is necessary; the question in a review is never whether two things are coupled but whether they are coupled through a stable contract or through an assumption that will move. High coupling is what makes a small change expensive, because the cost of the change is not the edit but everything the edit forces you to also understand.
Full entry →