design patterns
Coupling and Cohesion: Two Concepts Every Developer Should Understand
Lately, I've been spending quite a lot of time learning about design patterns and software architecture.
And the deeper I go, the more often I come across two concepts that seem to be behind almost everything: coupling and cohesion.
They may sound abstract at first, but they actually describe two very practical things:
How strongly are different parts of the system dependent on each other, and how well do the responsibilities inside a component belong together?

