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.
You don’t get fast by written crap
Inherintance is used in dynamic languages to inherint behaviors from others