4 ms·
The underlying problem is that the "don't repeat yourself" principle is often in conflict with the "single responsibility principle". Structurally, this comes d
by andrewprock 3y ago
The underlying problem is that the "don't repeat yourself" principle is often in conflict with the "single responsibility principle". Structurally, this comes down to the problem of managing dependencies. Over the years, the problem of dependency management has become bigger and more difficult to tame.
The same problem holds for internal code as well as external code. Duplicating code creates one kind of dependency problem (feature drift). Shared code creates another kind of dependency problem (increased coupling). Broadly speaking, solutions which reduce coupling are going to be cheaper to maintain.
Ideally, there would be clear, well defined layers with narrow communication protocols.