December 25, 2019

SOLID Principles of Object Oriented & Agile Design


Robert "Uncle Bob" Martin


I might be walking into undesirable path here, but every presentation I saw from Uncle Bob was bad. I have to say that, I’m now saying that there is no wisdom in these talks but only that I have to filter so much unrelated and trivias that makes it difficult and most of the times boring.

I like presentations like Linus names his functions: short, sweet and to the point.

OO is about managing dependencies so you can prevent fragility and rigidity


The ultimate failure of a software developer is when the business prohibits you to make changes to a specific module in the system.

Three magic words of OO: Encapsulation, Inherintance and Polymorphism


Single Responsibility: a class should have one single reason to change

Open/Closed: modules should be open for extension but closed for modification

Liskov Substitution: derived classes must be usable through the base class interface

Interface segregation: clients should not be forced to depend upon interfaces that they do not use

Dependency inversion: high-level modules, which provide complex logic, should not depend on low-level modules, which provides utility features. Both should depend on abstractions.


  1. You don’t get fast by written crap

  2. Inherintance is used in dynamic languages to inherint behaviors from others

Tags: agile design