connascence
Installation
SKILL.md
Connascence
Two pieces of code are connascent when changing one forces a change to the other to keep the program correct. Named by Meilir Page-Jones, 1992.
"Coupling" is a binary word, which makes it useless in review since everything is coupled to something. Connascence supplies a taxonomy and a ranking, converting "this feels tightly coupled" into "this is connascence of position across a package boundary", which names the fix.
Three axes
Judge every instance on all three:
- Strength: how hard it is to refactor. See the ladder below.
- Degree: how many places are involved.
- Locality: how far apart they sit. Same function, same class, same module, same repo, different service.
The rule that ties them together:
The further apart two things are, the weaker their connascence must be.
Strong connascence inside one small function is ordinary code. The same connascence spanning two services is an incident waiting to happen.