Beyond coupling and cohesion: strategies for un-fucking yourself
jesseduffield.com
jesseduffield.com
However, I would give the same criticism as I would to the SRP (Single Responsibility Principle): What exactly is a "reason to change"?
In my experience, it is rarely as clear as in the examples that were given. This vagueness of the SRP has always bothered me. In my opinion, this problem invalidates (or at least weakens) the entire SOLID concept and many of the Gang of Four patterns with it.
what are you seeking to understand as a result of knowing precisely what a "reasons to change" is?
Agreed. The problem is that the SRP mandates that you make decisions based on this vaguely defined concept.
Answering your question (or "what is _one_ thing?") is often called an art, and seems to be learned through experience. Though I do wonder if it's possible to teach as well. So far in this industry we teach it using rules of thumb and "principles", but it doesn't seem to work very well.
> I contend that these three axes: colocation, domain interdependence, and practical interdependence, form a basis that covers Coupling, Cohesion, DRYness, and the Wrong Abstraction, as well as some other things too.
Seeing as the author is mainly rehashing themes from the GoF book, albeit with more modern examples (e.g microservices and npm dependencies), I would maybe phrase that a bit more humbly.
To me, Wrong Abstraction is just the Single Responsibility Principle stated differently (which the author doesn't mention - not even as Separation of Concerns). _I contend_ that one could derive all other rules and patterns from this one principle.
i've found minimising shotgun changes to bey favourite and most productive guiding light when refactoring.
Is it as simple as "whether the use cases imply the dependence"?
How does this relate to "reasons to change"?
My only issue is it does not play so well with microservices.