This is an index to already published articles on software design.
Some rules must be followed and embraced to create great software designs.
This article summarizes them, serving as an index to full stories.
TL;DR: Important concepts about Object-Oriented Programming
Axioms
Build a MAPPER
https://hackernoon.com/what-is-wrong-with-software-uh8j3y7k?embedable=true
Keep a bijection to real entities:
https://hackernoon.com/the-one-and-only-software-design-principle-1x983ylp?embedable=true
Definitions
Corollaries
Do not use null
https://hackernoon.com/null-the-billion-dollar-mistake-8t5z32d6?embedable=true
Avoid Accidental IFs
https://hackernoon.com/how-to-get-rid-of-annoying-ifs-forever-zuh3zlo?embedable=true
Favor immutability:
Avoid Setters and Getters:
https://hackernoon.com/nude-models-part-i-setters-5tm3u3y?embedable=true
https://hackernoon.com/nude-models-part-ii-getters-sjo3ua2?embedable=true
Best practices
Avoid Coupling:
https://hackernoon.com/coupling-the-one-and-only-software-designing-problem-9z5a321h?embedable=true
Fail Fast:
https://hackernoon.com/fail-fast-philosophy-explained-si963vk9?embedable=true
Avoid Meta-Programming:
https://hackernoon.com/laziness-chapter-i-meta-programming-6s4l300e?embedable=true
Avoid Dynamic Code Generation:
https://hackernoon.com/lazyness-chapter-ii-code-wizards-3i9x3xtr?embedable=true
Choose meaningful names
https://hackernoon.com/what-exactly-is-a-name-the-quest-part-i-fmw3udc?embedable=true
https://hackernoon.com/what-exactly-is-a-name-rehab-part-ii-4st3uph?embedable=true
Build a Theory
https://hackernoon.com/programming-as-theory-building-lts3eqr?embedable=true
Avoid Accidental Complexity
https://hackernoon.com/there-are-no-silver-bullets-for-this-werewolf-2t213woi?embedable=true
Get Inspired by Quotes
https://hackernoon.com/400-thought-provoking-software-engineering-quotes?embedable=true
Anti Patterns
Do not use Singleton:
https://hackernoon.com/singleton-pattern-the-root-of-all-evil-e4r3up7?embedable=true
Avoid Code Smells
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-i-xqz3evd?embedable=true
Refactorings
Understand Refactorings
https://maximilianocontieri.com/how-to-improve-your-code-with-easy-refactorings?embedable=true
Philosophy
Exercises
https://hackernoon.com/how-to-decouple-a-legacy-system-zf153u42?embedable=true
https://hackernoon.com/zombie-testing-one-behavior-at-a-time-9s2m3zjo?embedable=true
Index on GitHub
https://github.com/mcsee/Software-Design-Articles?embedable=true
Buy my Book
https://cleancodecookbook.com/?embedable=true
This series aims to spark debate and discussion on software design.
Your comments and suggestions are highly appreciated.
This article is also available in Spanish here.