Skip to content

The catalog that names
what’s wrong with your code

Built for the developer who knows something’s wrong with the code but can’t name it yet. 56 smells, five dimensions, every relationship mapped.

0
Code Smells
0
Dimensions
0
Sources
0
on Google
Today’s smell: Hidden Dependencies →

Why This Catalog Exists

I spent the better part of a year reading every academic paper I could find on code smells. What I found was frustrating:

  • Papers buried them in academic prose nobody had time to parse.
  • Books scattered them across chapters with no unified view.
  • Blog posts covered the same handful — always Long Method, always God Class.

Nowhere had all of them in one place.

So I built one.

I turned it into my Master’s thesis at Wroclaw University of Science and Technology, published alongside a Springer Nature research paper. One goal: read everything, classify everything, and make it all browsable.

Every entry has a paper trail. Who named it, when, where. Which smells it causes and which cause it. What it breaks, and how to fix it.

What I wished existed — five ways to look at every smell, and a map of how they’re all connected.

Five Ways to Look at Every Smell

Most lists give you a name and move on. This catalog classifies each smell across five independent dimensions — start from what’s blocking you, where it shows up, or how deep it goes.

“Yes, classifying code smells along five dimensions is perhaps a bit obsessive.”

Anatomy of a Smell

Every smell gets the same treatment. Here’s what you get.

Classified
Five independent dimensions — filter from any angle
Cause Chains
Mapped to the smells it triggers — and the ones that trigger it
Lexical Abusers · Antipattern
Magic Number
Also known as: Uncommunicative Number
A bare 86400 in the code — is that seconds in a day, a timeout, or a config limit? Unnamed numbers hide intent, and when the same literal appears in five places, changing one means hunting for the rest.
Lexical Abusers Names Antipattern Within Class
Relationships
Family: Uncommunicative Name, Boolean Blindness
Causes: Obscured Intent, "What" Comment, Duplicated Code
Refactoring
Replace with Symbolic Constant, Replace with Parameter
Plain Language
Written for developers, not academic journals
Fixable
Concrete refactoring techniques, not just “clean this up”
1 / 6 This is Magic Number.
That’s the surface. Every one of the 56 goes this deep.
Explore the Catalog →

The Research & the Author

This whole thing started because I couldn’t find a single place that collected all the smells. So I spent the better part of a year reading the papers, and published the taxonomy through Springer Nature. If it’s been useful, the citation goes a long way.

Springer

Code Smells: A Comprehensive Online Catalog and Taxonomy

Marcel Jerzyk, Lech Madeyski 2023 Springer Nature · Studies in Systems, vol 462

What happens when you read 40+ papers about code smells and organize everything into one place? 56 named smells across 5 taxonomy dimensions — with every causal relationship mapped.

Citation
Jerzyk, M., Madeyski, L. (2023). Code Smells: A Comprehensive Online Catalog and Taxonomy. In: Studies in Systems, Decision and Control, vol 462. Springer, Cham. https://doi.org/10.1007/978-3-031-25695-0_24
276
GitHub stars
25
Academic citations
56
Smells cataloged
40+
Papers surveyed
MJ

Papers don’t write themselves. Catalogs don’t either.

Marcel Jerzyk

Marcel Jerzyk

Senior Software Engineer & Smell Taxonomist
Springer Nature, 2023·Wrocław University of Science and Technology

I read 40 papers about code smells so you don’t have to. Then I built this catalog because the research deserved better than a PDF nobody opens.

Engineer, researcher, music producer. Pattern recognition is the thread.

Questions about the taxonomy? Open an issue or say hi.