Practical Object-Oriented Design: An Agile Primer Using Ruby
Rate it:
Read between October 12 - November 6, 2018
3%
Flag icon
modeling the world as a series of messages that pass between objects.
4%
Flag icon
Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion.
7%
Flag icon
Design is more the art of preserving changeability than it is the act of achieving perfection.
9%
Flag icon
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.
21%
Flag icon
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.
23%
Flag icon
is made up of classes but defined by messages.
23%
Flag icon
Good public interfaces reduce the cost of unanticipated change; bad public interfaces raise it.
24%
Flag icon
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.
50%
Flag icon
The best way to create an abstract superclass is by pushing code up from concrete subclasses.