$ mujun.dev_

矛盾 — a documentation portal for the contradictions inherent in software. Every paradox is a feature, every disagreement a design decision.

// rev. 0.4.7 // last touched 2026-05-04 // LICENSE: MIT

abstraction vs. clarity

@author mujun · @severity high · @status unresolved

Abstraction promises reuse and elegance. Clarity promises that the next engineer — often you, six months later — can read the code without unrolling three layers of indirection in their head. The contradiction is that good abstractions hide complexity, but the act of hiding is also the act of obscuring.

1+ A well-named function is a frozen idea you never re-think.
2- A well-named function is a frozen idea you can no longer question.
3+ Abstractions free the mind to operate at a higher level.
4- Abstractions hide the bug in the layer below.
5+ Names are documentation.
6- Names are lies that age faster than code.

The honest position: every abstraction is a debt to a future reader, paid in advance with the hope that the runtime savings will outweigh the inheritance tax. The dishonest position: pretending the tax doesn't exist.