"Design is not the act of following a fixed set of rules, it's a journey along a branching path wherein earlier choices close off some options and open access to others (p 4)." Sandi Metz, author of Practical Object-Oriented Design, has created an invaluable programming primer. She believes, and well-defends, that the arranging of code is an art of design.
The fundamental basis of her drive to share why single-responsibility objects determine cost and time efficiency for the inevitable changes all code will face is the piece that satisfies the need for logic in the developer's brain.
Object-oriented programming leaves the abstract nature of coding via logic and function and places the responsibility of buildable code upon manipulating objects that contain bits of data. Object-oriented design allows for multiple developers to build code for large
"[The isolation of classes] allows change without consequence and reuse without duplication." p 35
Most of the material in her book is dedicated to teach developers what are some of the concepts and practices that they could use to allow their system to evolve with time. The book covers concepts like single responsibility principle, dependency injection, duck-typing, inheritance, composition, modules (mixins), unit testing, and interfaces in a very pragmatic way.
"The tension inherent in design means that these rules are meant to be broken;
learning to break them well is a designer's greatest strength" Â p 241