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
AxiomsBuild 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 CorollariesDo 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 practicesAvoid 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 PatternsDo 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
RefactoringsUnderstand Refactorings
https://maximilianocontieri.com/how-to-improve-your-code-with-easy-refactorings?embedable=true
Philosophy Exerciseshttps://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 GitHubhttps://github.com/mcsee/Software-Design-Articles?embedable=true
Buy my Bookhttps://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.
All Rights Reserved. Copyright , Central Coast Communications, Inc.