Why SRP Is Wrong: The Cardinality Error in the Single Responsibility Principle
Skip to main
You are using an outdated browser. Please upgrade your browser to improve your experience.
Published May 27, 2026
| Version v1
Preprint
Open
Why SRP Is Wrong: The Cardinality Error in the Single Responsibility Principle
Authors/Creators
Loth, Yannick<br>(Researcher)1
Show affiliations
1.
Independent Researcher
Description
The Single Responsibility Principle (SRP) — a class or module should have “one, and only one, reason to change” — is wrong. Not imprecise, not context-dependent, not merely misunderstood: wrong. We exhibit a concrete counterexample: the adapter pattern.
An adapter mediates between two domains with incompatible interfaces, and therefore has visibly two “reasons to change” under Martin’s own interpretation of his terms — one when the target interface changes, one when the adaptee interface changes.
Under Martin’s criterion for counting reasons to change, these are two distinct reasons.
The adapter violates SRP, and SRP’s prescribed remedy (splitting the adapter into submodules each with one reason to change) destroys the adapter’s function. Mediation requires both domains’ knowledge to be present in the same reasoning step; any attempted split would require duplicating knowledge, which would restore the multi-driver assignment.
Therefore, the SRP, as stated by Martin, is false. It asserts a universal claim that is contradicted by a concrete counterexample.
The refutation does not depend on the choice of adapter. Any module whose purpose is to mediate between independent domains is equally a counterexample. The class of counterexamples is not a marginal edge case: the majority of complex software systems must interface with external domains.
Files
loth2026-srpiswrong.pdf
Files<br>(260.7 kB)
Name<br>Size
Download all
loth2026-srpiswrong.pdf
md5:06c72d489454ce0d0f52a427f83de885
260.7 kB
Preview
Download
Additional details
Additional titles
Subtitle
(Old English (ca. 450-1100))
Why a Universal Claim About Module Cardinality Fails by Counterexample
Views
Downloads
Show more details
All versions<br>This version
Views
Total views
Downloads
Total downloads
Data volume
Total data volume
1.5 MB<br>1.5 MB
More info on how stats are collected....
Versions
External resources
Indexed in
OpenAIRE
Communities
Keywords and subjects
Keywords
Software Engineering
SOLID
Design Principles
Software Architecture
MeSH
Software Design
Details
DOI
DOI Badge
DOI
10.5281/zenodo.20415656
Markdown
[](https://doi.org/10.5281/zenodo.20415656)
reStructuredText
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.20415656.svg<br>:target: https://doi.org/10.5281/zenodo.20415656
HTML
Image URL
https://zenodo.org/badge/DOI/10.5281/zenodo.20415656.svg
Target URL
https://doi.org/10.5281/zenodo.20415656
Resource type<br>Preprint
Publisher<br>Zenodo
Languages
English
Rights
License
Creative Commons Attribution 4.0 International
The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.
Read more
Copyright
Copyright (C) 2026 Yannick Loth
Citation
Export
Technical metadata
Created
May 27, 2026
Modified
May 27, 2026
Jump up
This site uses cookies. Find out more on how we use cookies
Accept all cookies<br>Accept only essential cookies