![[I hate design smells at the morning#^opacity|Every programmer ever]]
## Definition
> The system is difficult to read and understand. The code does not communicate its intentions well.
^definition
Very often caused by the rest of [[Design smell]]s, especially by too many ([[Overdesign]]) or too few ([[Rigidity]], [[Duplications]]) proper abstractions.
## Consequences
- Over time, the code tends to become increasingly opaque.
- Maintaining minimal opacity requires continuous effort.
- Often, returning to our old code, which once seemed clear, we find it to be terrible.
- One must put themselves in the position of the readers of their code - [[Code for the Maintainer]].
- The code should be reviewed by other people - Code review.
^consequences