Comparison
Divergent changevsSingle responsibility
Divergent change
the same class is edited for tax rules, for the export format and for the retry policy, by three different people.
One module changing for several unrelated reasons, meaning several responsibilities have collected in it. It is the single-responsibility principle stated as an observation rather than a rule, and the evidence is in the version history rather than the code. Splitting along the lines the commits reveal is more reliable than splitting along the lines a diagram suggests.
Full entry →Single responsibility
two teams keep editing the same class for two entirely unrelated reasons and keep colliding.
The rule that a module should have one reason to change — which is a statement about people, not about code size. The useful reading is the original one: a responsibility is a stakeholder whose request causes an edit, so a class serving the finance team and the support team has two. It comes up whenever a shared file becomes a merge-conflict hotspot, which is the symptom the principle was invented to describe.
Full entry →