More on this book
Community
Kindle Notes & Highlights
by
Metz Sandi
Read between
October 12 - November 6, 2018
modeling the world as a series of messages that pass between objects.
Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion.
Design is more the art of preserving changeability than it is the act of achieving perfection.
When the future cost of doing nothing is the same as the current cost, postpone the decision. Make the decision only when you must with the information you have at that time.
to depend on external interfaces that you cannot change. Do not allow these kinds of external dependencies to permeate your code; protect yourself by wrapping each in a method that is owned by your own application.
is made up of classes but defined by messages.
Good public interfaces reduce the cost of unanticipated change; bad public interfaces raise it.
Changing the fundamental design question from “I know I need this class, what should it do?” to “I need to send this message, who should respond to it?” is the first step in that direction.
The best way to create an abstract superclass is by pushing code up from concrete subclasses.

