Home > Author > Sandi Metz
1 " Persist. Practice. Experiment. Imagine. Do your best work, and all else will follow. "
― Sandi Metz , Practical Object Oriented Design in Ruby
2 " Every dependency is like a little dot of glue that causes your class to stick to the things it touches. "
3 " You don’t send messages because you have objects, you have objects because you send messages. "
4 " Novice programmers don’t yet have the skills to write simple code. "
5 " The first way design fails is due to lack of it. "
6 " depend on things that change less often than you do. "
7 " Successful (working) but undesigned applications carry the seeds of their own destruction; they are easy to write, but gradually become impossible to change. "
8 " Your application needs to work right now just once; it must be easy to change forever. "
9 " The future is uncertain and you will never know less than you know right now. "
10 " Those of us whose work is to write software are incredibly lucky. Building software is a guiltless pleasure because we get to use our creative energy to get things done. We have arranged our lives to have it both ways; we can enjoy the pure act of writing code in sure knowledge that the code we write has use. We produce things that matter. We are modern craftspeople, building structures that make up present-day reality, and no less than bricklayers or bridge builders, we take justifiable pride in our accomplishments. "
― Sandi Metz
11 " In a small application, poor design is survivable. Even if everything is connected to everything else, if you can hold it all in your head at once, you can still improve the application. The problem with poorly designed small applications is that if they are successful, they grow up to be poorly designed big applications. "
12 " A dependency on a private method of an external framework is a form of technical debt. Avoid these dependencies. "
13 " 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. "
14 " The problem is not one of technical knowledge but of organization; you know how to write the code but not "
15 " Agile processes guarantee change and your ability to make these changes depends on your application’s design. "
16 " Your job is one of synthesis; you must combine an overall understanding of your application’s requirements with knowledge of the costs and benefits of design alternatives and then devise an arrangement of code that is cost effective in the present and will continue to be so in the future. "
17 " Conveying information that a method is stable or unstable is one thing; attempting to control how others use it is quite another. "
18 " Instead of deciding on a class and then figuring out its responsibilities, you are now deciding on a message and figuring out where to send it. This transition from class-based design to message-based design is a turning point in your design career. "
19 " If lack of a feature will force you out of business today it doesn’t matter how much it will cost to deal with the code tomorrow; you "
20 " The general rule for refactoring into a new inheritance hierarchy is to arrange code so that you can promote abstractions rather than demote concretions. "