Quotes About Change
The fundamental assumption underlying all software projects is that software is easy to change. If you violate this assumption by creating inflexible structures, then you undercut the economic model that the entire industry is based on. In
~ Robert C. Martin
BazillionQuotes.com
It is a myth that we can get systems "right the first time." Instead, we should implement only today's stories, then refactor and expand the system to implement new stories tomorrow. This is the essence of iterative and incremental agility.
~ Robert C. Martin
BazillionQuotes.com
Without tests every change is a possible bug. No
~ Robert C. Martin
BazillionQuotes.com
These comments are so noisy that we learn to ignore them. As we read through code, our eyes simply skip over them. Eventually the comments begin to lie as the code around them changes.
~ Robert C. Martin
BazillionQuotes.com
Good software designs accommodate change without huge investments and rework. When we use code that is out of our control, special care must be taken to protect our investment and make sure future change is not too costly.
~ Robert C. Martin
BazillionQuotes.com
Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change. —Grady Booch
~ Robert C. Martin
BazillionQuotes.com
The only way to prove that your software is easy to change is to make easy changes to it. And when you find that the changes aren't as easy as you thought, you refine the design so that the next change is easier. When do you make these easy changes? All the time! Every time you look at a module you make small, lightweight changes to it to improve its structure.
~ Robert C. Martin
BazillionQuotes.com
It is the volatile concrete elements of our system that we want to avoid depending on. Those are the modules that we are actively developing, and that are undergoing frequent change.
~ Robert C. Martin
BazillionQuotes.com
In general output arguments should be avoided. If your function must change the state of something, have it change the state of its owning object.
~ Robert C. Martin
BazillionQuotes.com
Why does good code rot so quickly into bad code? We have lots of explanations for it. We complain that the requirements changed in ways that thwart the original design. We bemoan the schedules that were too tight to do things right. We blather about stupid managers and intolerant customers and useless marketing types and telephone sanitizers. But the fault, dear Dilbert, is not in our stars, but in ourselves. We are unprofessional.
~ Robert C. Martin
BazillionQuotes.com
If your function must change the state of something, have it change the state of its owning object.
~ Robert C. Martin
BazillionQuotes.com
If you are not holding back some energy in reserve, if you don't have a new plan, if you aren't going to change your behavior, and if you are reasonably confident in your original estimate, then promising to try is fundamentally dishonest. You are lying. And you are probably doing it to save face and to avoid a confrontation.
~ Robert C. Martin
BazillionQuotes.com
The component structure cannot be designed from the top down. It is not one of the first things about the system that is designed, but rather evolves as the system grows and changes.
~ Robert C. Martin
BazillionQuotes.com
Indeed, most of us realize that the requirements are the most volatile elements in the project.
~ Robert C. Martin
BazillionQuotes.com
One of the best ways to ruin a program is to make massive changes to its structure in the name of improvement. Some programs never recover from such "improvements." The problem is that it's very hard to get the program working the same way it worked before the "improvement.
~ Robert C. Martin
BazillionQuotes.com
Software is a compound word. The word "ware" means "product." The word "soft" means easy to change. Therefore, software is a product that is easy to change. Software was invented because we wanted a way to quickly and easily change the behavior of our machines. Had we wanted that behavior to be hard to change, we would have called it hardware.
~ Robert C. Martin
BazillionQuotes.com
It is the perversity of software that a module that you have designed to be easy to change can be made difficult to change by someone else simply hanging a dependency upon it.
~ Robert C. Martin
BazillionQuotes.com
refactored) /**
~ Robert C. Martin
BazillionQuotes.com
The complement is also true: Procedural code makes it hard to add new data structures because all the functions must change. OO code makes it hard to add new functions because all the classes must change.
~ Robert C. Martin
BazillionQuotes.com
OCP: The Open-Closed Principle Bertrand Meyer made this principle famous in the 1980s. The gist is that for software systems to be easy to change, they must be designed to allow the behavior of those systems to be changed by adding new code, rather than changing existing code.
~ Robert C. Martin
BazillionQuotes.com
The goal of the principles is the creation of mid-level software structures that: • Tolerate change, • Are easy to understand, and • Are the basis of components that can be used in many software systems.
~ Robert C. Martin
BazillionQuotes.com
SRP: The Single Responsibility Principle An active corollary to Conway's law: The best structure for a software system is heavily influenced by the social structure of the organization that uses it so that each software module has one, and only one, reason to change.
~ Robert C. Martin
BazillionQuotes.com
THE COMMON CLOSURE PRINCIPLE Gather into components those classes that change for the same reasons and at the same times. Separate into different components those classes that change at different times and for different reasons.
~ Robert C. Martin
BazillionQuotes.com
This is the Single Responsibility Principle restated for components. Just as the SRP says that a class should not contain multiples reasons to change, so the Common Closure Principle (CCP) says that a component should not have multiple reasons to change.
~ Robert C. Martin
BazillionQuotes.com
