![[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