Dreadful Clean Code is an awesome list of rebuttals to a dreadful idea.
- Hot takes for lazy readers
- All that is SOLID melts into air
- Clean Code Madness
- Object-Oriented Programming Madness
- Out of the SOLID pit
SOLID is a money-making instrument, not an instrument to make code better.
The OO design concept initially proved valuable in the design of graphics systems, graphical user interfaces, and certain kinds of simulation. To the surprise and gradual disillusionment of many, it has proven difficult to demonstrate significant benefits of OO outside those areas.
If a language technology is so bad that it creates a new industry to solve problems of its own making then it must be a good idea for the guys who want to make money. This is is the real driving force behind OOPs.
So I'm sorry, but for something like git, where efficiency was a primary objective, the "advantages" of C++ is just a huge mistake. The fact that we also piss off people who cannot see that is just a big additional advantage.
If you want a VCS that is written in C++, go play with Monotone. Really. They use a "real database". They use "nice object-oriented libraries". They use "nice C++ abstractions". And quite frankly, as a result of all these design decisions that sound so appealing to some CS people, the end result is a horrible and unmaintainable mess.
But I'm sure you'd like it more than git.
I have never seen an OO principle which, if I applied it to my code, would improve it in any way. On the contrary, in my humble opinion it would make it more cumbersome, less reusable, less flexible and less maintainable.
After reading all these OO principles and best practices I have concluded that they were written by people who have little or no experience of web-based database applications, so all their "advice" is not worth the toilet paper on which it was written. Until such time as they gain that experience and come up with ideas which are demonstrably better than mine I shall continue to ignore them.
But for a certain segment of the computing industry, the answer to “why is software so slow” is in large part “because of ‘clean’ code”. The ideas underlying the “clean” code methodology are almost all horrible for performance, and you shouldn’t do them.
The industry best practices are still revolving around the object oriented programming which does not perform well on a modern hardware.
The "Clean code" ideals are a succinct offender. Appealing mostly to vague, unverifiable, and unfalsifiable measures of how good code looks, or how easy it is to read and understand. It forgets the physical foundations of our computing systems. Preferring subjective appreciations of "cleanliness", supposed to make the practice of software programming more appealing to the engineer, as opposed to trying to provide the best possible technology to the users.
Lack of Falsifiability in Software Engineering by Vicente Ferrari Smith
- "Clean" Code, Horrible Performance by Casey Muratori
- "Clean" Code: Horrible Performance | Full Interview with The Primeagen and Casey Muratori
- Beyond SOLID: The Dependency Elimination Principle by Brian Geihsler
- Deconstructing SOLID design principles by Ted Kaminski
- Is Uncle Bob serious? by Blaine Osepchuk
- It's probably time to stop recommending Clean Code by qntm
- Lack of Falsifiability in Software Engineering by Vicente Ferrari Smith
- Not-so-SOLID OO Principles by Tony Marston
- SOLID Deconstruction - Slides by Kevlin Henney
- SOLID Deconstruction - Talk by Kevlin Henney
- SOLID Is OOP for Dummies by Yegor Bugayenko
- Stop overusing interfaces by Tor Hovland
- The Clean Code Debacle and Rhetoric Tricks - Casey Muratori vs Mr "Uncle Bob" Martin by TheGingerBill
- The Clean Code Debate between Casey Muratori and Robert C. Martin
- The compiler will optimize that away by RoyalSloth
- Why I Don't Teach SOLID by Brian Geihsler
- Examining the Single Responsibility Principle by David Bryant Copeland
- I don't love the single responsibility principle by Marco Cecconi
- Repeat yourself, do more than one thing, and rewrite everything by tef
- Say "No" to the Open/Closed pattern by Marco Cecconi
- The Open/Close Principle is Confusing and, well, Wrong by David Bryant Copeland
- Bad Engineering Properties of Object-Oriented Languages by Luca Cardelli
- Critique of Bertrand Meyer's Object Oriented Software Construction, 2nd Edition
- Linus Torvalds on C++
- Object-Oriented Considered Harmful by Frans
- Object-Oriented Programming is Bad by Brian Will
- The Problem with Object-Oriented Programming by Navdeep Singh
- Unix and Object-Oriented Languages by Eric Steven Raymond
- What went wrong in software development by Jonathan Blow
- Why OO Sucks by Joe Armstrong
- A Philosophy of Software Design - Talks at Google by John Ousterhout
- All the Little Things by Sandi Metz
- Basics of the Unix Philosophy by Eric Steven Raymond
- Duplication is better than Wrong Abstraction by Ray Chong
- Keep things brutally simple by Lawrence Kesteloot
- The Wrong Abstraction by Sandi Metz
- Write code that is easy to delete, not easy to extend by tef
- Write code top-down by Lawrence Kesteloot