Object Design Checklist
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
What is (wrong with) software?
Software is eating the world. Those of us who work, live and love software do not usually stop by to think about its meaning.
Keep a bijection to real entities:
The one and only software design principle
If we build our entire paradigm on a single rule, we can keep it simple and make excellent models.
Definitions
Explain in 5 Levels of Difficulty: Object-Oriented Programming
Corollaries
Do not use null
Avoid Accidental IFs
Favor immutability:
Avoid Setters and Getters:
Nude Models - Part II: Getters
Best practices
Avoid Coupling:
Fail Fast:
Avoid Meta-Programming:
Avoid Dynamic Code Generation:
Choose meaningful names
What exactly is a name - Part I The Quest
What exactly is a name - Part II Rehab
Build a Theory
Programming as Theory Building
Avoid Accidental Complexity
Get Inspired by Quotes
Anti Patterns
Do not use Singleton:
Avoid Code Smells
Refactorings ⚙️
Understand Refactorings
How to Improve your Code With easy Refactorings
Refactorings are amazing to grow and improve our code
Philosophy
Warning: The Universe's Event Simulator Is a Fierce Adversary for Coders!
TL;DR: Programming is all about making actual simulators and getting a grip on how the universe behaves and what holds it back.
Exercises
How to Decouple a Legacy System
How to Squeeze Test Driven Development on Legacy Systems
How I Survived the Zombie Apocalypse
Index on GitHub
Buy my Book
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.