Object Design Checklist
This is an index to already published articles on software design.
TL;DR: 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.
Axioms
Build a MAPPER
What is (wrong with) software?
TL;DR: You will address current software design problems in a minimalist way.
Keep a bijection to real entities:
The one and only software design principle
Being minimalist and being axiomatic means we can derive a set of rules from a single definition.
Definitions
Explain in 5 Levels of Difficulty: Object-Oriented Programming
TL;DR: What is 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 II Rehab
Build a Theory
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 Squeeze Test Driven Development on Legacy Systems
We all love T.D.D. We know its benefits, we have read a thousand tutorials on how to build a system using this technique. But this not feasible for currently legacy systems
How I Survived the Zombie Apocalypse
Selecting great test cases is very hard. Unless you summon the undead.
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.
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.




















