User Tools

Site Tools


Low Coupling (LC)

Variants and Alternative Names

  • Loose Coupling


Principle Statement

Coupling between modules should be low.


A module should not interact with too many other modules. Furthermore if a module A interacts with another module B, this interaction should be loose, which means that A should not make too many assumptions about B.


If a module A interacts with a module B, there is a certain dependency between these modules. When for example A uses a certain functionality of B, then A depends on B. A makes the assumption that B provides a certain service, and moreover it makes assumptions on how this service can be used (by which mechanism, which parameters, etc.). If one of these assumptions is not true anymore because B has changed for some reason, A also has to change. So the fewer dependencies there are, the less likely it is that A stops working and has to be changed.

Furthermore A makes many and detailed assumptions about B, there is also a high probability that A has to change despite only relying one one other module. This is because in such a case A also needs to change when only a certain detail of B changes.

But if coupling is low, there are only few assumptions between the modules which can be violated. This reduces the chance of ripple effects.


  • Indirection:
  • Dependency Inversion/Abstract Couplings:
  • Use lower form of coupling:
  • Merge modules:
  • Hide information



Relations to Other Principles



  • Tell, don't Ask/Information Expert (TdA/IE): Adhering to the information expert principle leads to low coupling as there is less need to communicate with other modules to get the necessary information.
  • Constantine's Law: Constantine's Law is just the combination of the two principles LC and HC.
  • Dependency Inversion Principle (DIP): LC aims at reducing the dependencies to other modules. One way to do so is to only depend on abstractions. DIP is about this aspect.

Contrary Principles

  • Keep It Simple Stupid (KISS): Reducing the coupling often involves the use of complicated interaction patterns, indirections, etc.
  • High Cohesion (HC): A system consisting of one single module has a very low coupling as there are no dependencies on other modules. But such a system also has low cohesion. The other extreme, very many highly cohesive modules, naturally has a higher coupling between the modules. So here a compromise has to be found.

Complementary Principles

  • Model Principle (MP): LC aims at reducing the dependencies to other modules. So a module shall depend on only a few others. MP now tells which dependencies are allowed and which aren't.
  • Information Hiding/Encapsulation (IH/E): Higher forms of couplings (especially content couplings) break encapsulation.

Principle Collections

OOD Principle Language
General Principles Modularization Principles
Principles Information Expert High Cohesion Low Coupling
Non-Principles Controller Creator Indirection Polymorphism Protected Variation Pure Fabrication


Description Status

Further Reading

principles/low_coupling.txt · Last modified: 2021-09-02 20:34 by