SOLID – Why SRP Is Wrong: The Cardinality Error in the SRP

humanfromearth91 pts1 comments

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 &ldquo;one, and only one, reason to change&rdquo; — 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 &ldquo;reasons to change&rdquo; under Martin&rsquo;s own interpretation of his terms — one when the target interface changes, one when the adaptee interface changes.

Under Martin&rsquo;s criterion for counting reasons to change, these are two distinct reasons.

The adapter violates SRP, and SRP&rsquo;s prescribed remedy (splitting the adapter into submodules each with one reason to change) destroys the adapter&rsquo;s function. Mediation requires both domains&rsquo; 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

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20415656.svg)](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

zenodo adapter https wrong rsquo cardinality

Related Articles