Quotes from Robert C. Martin
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
This physics constrains all projects to obey an unassailable trade-off called the Iron Cross of project management. Good, fast, cheap, done: Pick any three you like. You can't have the fourth.
~ Robert C. Martin
BazillionQuotes.com
refactored) /**
~ Robert C. Martin
BazillionQuotes.com
The reality is that a good project manager understands that these four attributes have coefficients. A good manager drives a project to be good enough, fast enough, cheap enough, and done as much as necessary. A good manager manages the coefficients on these attributes rather than demanding that all those coefficients are 100%. It is this kind of management that Agile strives to enable.
~ Robert C. Martin
BazillionQuotes.com
The hardest thing about choosing good names is that it requires good descriptive skills and a shared cultural background. This is a teaching issue rather than a technical, business, or management issue.
~ Robert C. Martin
BazillionQuotes.com
Analysis and design are not binary deliverables. They do not have unambiguous completion criteria. There's no real way to know that you are done with them.
~ Robert C. Martin
BazillionQuotes.com
You should choose a set of simple rules that govern the format of your code, and then you should consistently apply those rules. If you are working on a team, then the team should agree to a single set of formatting rules and all members should comply.
~ Robert C. Martin
BazillionQuotes.com
THE STABLE ABSTRACTIONS PRINCIPLE A component should be as abstract as it is stable.
~ 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
The Stable Abstractions Principle (SAP) sets up a relationship between stability and abstractness. On the one hand, it says that a stable component should also be abstract so that its stability does not prevent it from being extended. On the other hand, it says that an unstable component should be concrete since its instability allows the concrete code within it to be easily changed.
~ Robert C. Martin
BazillionQuotes.com
The SAP and the SDP combined amount to the DIP for components. This is true because the SDP says that dependencies should run in the direction of stability, and the SAP says that stability implies abstraction. Thus dependencies run in the direction of abstraction.
~ Robert C. Martin
BazillionQuotes.com
As an engineer, you have a depth of knowledge about your systems and projects that no managers can possibly have. With that knowledge comes the responsibility to act.
~ Robert C. Martin
BazillionQuotes.com
Duplication may be the root of all evil in software. Many principles and practices have been created for the purpose of controlling or eliminating it.
~ Robert C. Martin
BazillionQuotes.com
That these acts are simple doesn't mean that they are simplistic, and it hardly means that they are easy.
~ Robert C. Martin
BazillionQuotes.com
Run with More Threads Than Processors Things happen when the system switches between tasks. To encourage task swapping, run with more threads than processors or cores. The more frequently your tasks swap, the more likely you'll encounter code that is missing a critical section or causes deadlock.
~ Robert C. Martin
BazillionQuotes.com
In an ideal system, we incorporate new features by extending the system, not by making modifications to existing code.
~ Robert C. Martin
BazillionQuotes.com
if the bricks aren't well made, the architecture of the building doesn't matter much.
~ 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 phone had a lock on the dial. Only the teachers had the key. But that didn't matter, because we learned that you could dial a phone (any phone) by tapping out the phone number on the switch hook. I was a drummer, so I had pretty good timing and reflexes. I could dial that modem, with the lock in place, in less than 10 seconds.
~ Robert C. Martin
BazillionQuotes.com
The SOLID principles tell us how to arrange our functions and data structures into classes, and how those classes should be interconnected. The use of the word "class" does not imply that these principles are applicable only to object-oriented software. A class is simply a coupled grouping of functions and data. Every software system has such groupings, whether they are called classes or not. The SOLID principles apply to those groupings.
~ Robert C. Martin
BazillionQuotes.com
Components are the units of deployment. They are the smallest entities that can be deployed as part of a system.
~ 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
That's being attentive to every variable name. You should name a variable using the same care with which you name a first-born child.
~ Robert C. Martin
BazillionQuotes.com
Regardless of how they are eventually deployed, well-designed components always retain the ability to be independently deployable and, therefore, independently developable.
~ Robert C. Martin
BazillionQuotes.com
