Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rodmoioliveira/dreadful-clean-code

DCC is an awesome list of rebuttals to a dreadful idea.
https://github.com/rodmoioliveira/dreadful-clean-code

List: dreadful-clean-code

awesome awesome-list clean-code cleancode solid-principles

Last synced: about 1 month ago
JSON representation

DCC is an awesome list of rebuttals to a dreadful idea.

Awesome Lists containing this project

README

        

# DCC - Dreadful Clean Code

DCC is an awesome list of rebuttals to a dreadful idea.

## Hot takes for lazy readers

### It's just marketing

> SOLID is a money-making instrument, not an instrument to make code better.
>
> [SOLID Is OOP for Dummies](https://www.yegor256.com/2017/03/28/solid.html) by [Yegor Bugayenko](https://twitter.com/yegor256)

### It closely relates to OOP and its delusional silver-bullet problem-solving promises

> 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.
>
> [Unix and Object-Oriented Languages](http://catb.org/esr/writings/taoup/html/unix_and_oo.html) by [Eric Steven Raymond](http://www.catb.org/~esr/)

### It's a good selling product to make money

> 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.
>
> [Why OO Sucks](https://www.cs.otago.ac.nz/staffpriv/ok/Joe-Hates-OO.htm) by [Joe Armstrong](https://twitter.com/joeerl)

### It leads to horrible and unmaintainable code

> 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.
>
> [Linus Torvalds on C++](https://harmful.cat-v.org/software/c++/linus)

> 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.
>
> [Not-so-SOLID OO Principles](https://www.tonymarston.net/php-mysql/not-so-solid-oo-principles.html) by [Tony Marston](https://www.tonymarston.net/aboutme/index.php)

### It's horrible performance-wise

> 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.
>
> ["Clean" Code, Horrible Performance](https://www.computerenhance.com/p/clean-code-horrible-performance) by [Casey Muratori](https://twitter.com/cmuratori)

> The industry best practices are still revolving around the object oriented programming which does not perform well on a modern hardware.
>
> [The compiler will optimize that away](https://blog.royalsloth.eu/posts/the-compiler-will-optimize-that-away/) by [RoyalSloth](https://blog.royalsloth.eu/contact/)

### It's just unverifiable and unfalsifiable

> 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](https://vferrari.cl/blog/) by [Vicente Ferrari Smith](https://vferrari.cl/)

## All that is SOLID melts into air

- ["Clean" Code, Horrible Performance](https://www.computerenhance.com/p/clean-code-horrible-performance) by [Casey Muratori](https://twitter.com/cmuratori)
- ["Clean" Code: Horrible Performance | Full Interview](https://www.youtube.com/watch?v=OtozASk68Os) with [The Primeagen](https://www.twitch.tv/ThePrimeagen) and [Casey Muratori](https://twitter.com/cmuratori)
- [Beyond SOLID: The Dependency Elimination Principle](https://qualityisspeed.blogspot.com/2014/09/beyond-solid-dependency-elimination.html) by [Brian Geihsler](https://twitter.com/BrianGeihsler)
- [Deconstructing SOLID design principles](https://www.tedinski.com/2019/04/02/solid-critique.html) by [Ted Kaminski](https://www.tedinski.com/about/)
- [Is Uncle Bob serious?](https://dev.to/bosepchuk/is-uncle-bob-serious-dhi) by [Blaine Osepchuk](https://dev.to/bosepchuk)
- [It's probably time to stop recommending Clean Code](https://qntm.org/clean) by [qntm](https://twitter.com/qntm)
- [Lack of Falsifiability in Software Engineering](https://vferrari.cl/blog/) by [Vicente Ferrari Smith](https://vferrari.cl/)
- [Not-so-SOLID OO Principles](https://www.tonymarston.net/php-mysql/not-so-solid-oo-principles.html) by [Tony Marston](https://www.tonymarston.net/aboutme/index.php)
- [SOLID Deconstruction - Slides](https://accu.org/conf-docs/PDFs_2012/Kevlin_SOLID_Deconstruction.pdf) by [Kevlin Henney](https://twitter.com/KevlinHenney)
- [SOLID Deconstruction - Talk](https://vimeo.com/157708450) by [Kevlin Henney](https://twitter.com/KevlinHenney)
- [SOLID Is OOP for Dummies](https://www.yegor256.com/2017/03/28/solid.html) by [Yegor Bugayenko](https://twitter.com/yegor256)
- [Stop overusing interfaces](https://blog.hovland.xyz/2017-04-22-stop-overusing-interfaces/) by [Tor Hovland](https://blog.hovland.xyz/)
- [The Clean Code Debacle and Rhetoric Tricks - Casey Muratori vs Mr "Uncle Bob" Martin](https://www.youtube.com/watch?v=ZLxazlP7Ppo) by [TheGingerBill](https://twitter.com/TheGingerBill)
- [The Clean Code Debate](https://github.com/cmuratori/misc/blob/main/cleancodeqa.md) between [Casey Muratori](https://twitter.com/cmuratori) and [Robert C. Martin](https://en.wikipedia.org/wiki/Robert_C._Martin)
- [The compiler will optimize that away](https://blog.royalsloth.eu/posts/the-compiler-will-optimize-that-away/) by [RoyalSloth](https://blog.royalsloth.eu/contact/)
- [Why I Don't Teach SOLID](https://qualityisspeed.blogspot.com/2014/08/why-i-dont-teach-solid.html) by [Brian Geihsler](https://twitter.com/BrianGeihsler)

### The Single-responsibility Principle

- [Examining the Single Responsibility Principle](https://naildrivin5.com/blog/2019/11/11/solid-is-not-solid-rexamining-the-single-responsibility-principle.html) by [David Bryant Copeland](https://naildrivin5.com/bio/index.html)
- [I don't love the single responsibility principle](https://sklivvz.com/posts/i-dont-love-the-single-responsibility-principle) by [Marco Cecconi](https://twitter.com/sklivvz)
- [Repeat yourself, do more than one thing, and rewrite everything](https://programmingisterrible.com/post/176657481103/repeat-yourself-do-more-than-one-thing-and) by [tef](https://mastodon.social/@tef)

### The Open/Close Principle

- [Say "No" to the Open/Closed pattern](https://sklivvz.com/posts/say-no-to-the-openclosed-pattern) by [Marco Cecconi](https://twitter.com/sklivvz)
- [The Open/Close Principle is Confusing and, well, Wrong](https://naildrivin5.com/blog/2019/11/14/open-closed-principle-is-confusing-and-well-wrong.html) by [David Bryant Copeland](https://naildrivin5.com/bio/index.html)

### Liskov Substitution Principle

- [Liskov Substitution Principle is…Not a Design Principle](https://naildrivin5.com/blog/2019/11/18/liskov-substitution-principle-is-not-a-design-principle.html) by [David Bryant Copeland](https://naildrivin5.com/bio/index.html)

### Interface Segregation Principle

- [Interface Segregation Principle is Unhelpful but Inoffensive](https://naildrivin5.com/blog/2019/11/21/interface-segreation-principle-is-unhelpful-but-inoffensive.html) by [David Bryant Copeland](https://naildrivin5.com/bio/index.html)

### Dependency Inversion Principle

- [Dependency Inversion Principle…is a Tradeoff](https://naildrivin5.com/blog/2019/12/02/dependency-inversion-principle-is-a-tradeoff.html) by [David Bryant Copeland](https://naildrivin5.com/bio/index.html)

## "Clean" Code Madness

- [FizzBuzzEnterpriseEdition](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)
- [lolzballs/HelloWorld.java](https://gist.github.com/lolzballs/2152bc0f31ee0286b722)

## Object-Oriented Programming Madness

- [Bad Engineering Properties of Object-Oriented Languages](http://lucacardelli.name/Papers/BadPropertiesOfOO.html) by [Luca Cardelli](http://lucacardelli.name/)
- [Critique of Bertrand Meyer's Object Oriented Software Construction, 2nd Edition](https://web.archive.org/web/20010511003307/http://www.geocities.com/tablizer/meyer1.htm)
- [Linus Torvalds on C++](https://harmful.cat-v.org/software/c++/linus)
- [Object-Oriented Considered Harmful](https://www.iwriteiam.nl/AoP_OOCH.html) by [Frans](https://www.iwriteiam.nl/Frans.html)
- [Object-Oriented Programming is Bad](https://youtu.be/QM1iUe6IofM) by [Brian Will](https://brianwill.github.io/)
- [Unix and Object-Oriented Languages](http://catb.org/esr/writings/taoup/html/unix_and_oo.html) by [Eric Steven Raymond](http://www.catb.org/~esr/)
- [What went wrong in software development](https://youtu.be/KcP1fXQv0iU) by [Jonathan Blow](https://twitter.com/Jonathan_Blow)
- [Why OO Sucks](https://www.cs.otago.ac.nz/staffpriv/ok/Joe-Hates-OO.htm) by [Joe Armstrong](https://twitter.com/joeerl)

## Out of the SOLID pit

- [A Philosophy of Software Design - Talks at Google](https://youtu.be/bmSAYlu0NcY?si=TN2tQQ1maLMFQevK) by [John Ousterhout](https://twitter.com/JohnOusterhout)
- [All the Little Things](https://www.youtube.com/watch?v=8bZh5LMaSmE) by [Sandi Metz](https://twitter.com/sandimetz)
- [Basics of the Unix Philosophy](http://catb.org/esr/writings/taoup/html/ch01s06.html) by [Eric Steven Raymond](http://www.catb.org/~esr/)
- [Duplication is better than Wrong Abstraction](https://blog.awesomesoftwareengineer.com/p/duplication-is-better-than-wrong-abstraction) by [Ray Chong](https://substack.com/@raychongtk)
- [Keep things brutally simple](https://www.teamten.com/lawrence/programming/keep-things-brutally-simple.html) by [Lawrence Kesteloot](https://github.com/lkesteloot)
- [The Wrong Abstraction](https://sandimetz.com/blog/2016/1/20/the-wrong-abstraction) by [Sandi Metz](https://twitter.com/sandimetz)
- [Write code that is easy to delete, not easy to extend](https://programmingisterrible.com/post/139222674273/write-code-that-is-easy-to-delete-not-easy-to) by [tef](https://mastodon.social/@tef)
- [Write code top-down](https://www.teamten.com/lawrence/programming/write-code-top-down.html) by [Lawrence Kesteloot](https://github.com/lkesteloot)