logo

Quotes from Robert C. Martin

The use case class accepts simple request data structures for its input, and returns simple response data structures as its output. These data structures are not dependent on anything.
~ Robert C. Martin
The most important thing a good architecture can do to support behavior is to clarify and expose that behavior so that the intent of the system is visible at the architectural level.
~ Robert C. Martin
The business rules should be the most independent and reusable code in the system.
~ Robert C. Martin
A shopping cart application with a good architecture will look like a shopping cart application. The use cases of that system will be plainly visible within the structure of that system. Developers will not have to hunt for behaviors, because those behaviors will be first-class elements visible at the top level of the system.
~ Robert C. Martin
SPECIAL CASE PATTERN
~ Robert C. Martin
The fact is that making messes is always slower than staying clean, no matter which time scale you are using.
~ Robert C. Martin
The developers may think that the answer is to start over from scratch and redesign the whole system—but that's just the Hare talking again. The same overconfidence that led to the mess is now telling them that they can build it better if only they can start the race over. The reality is less rosy: Their overconfidence will drive the redesign into the same mess as the original project.
~ Robert C. Martin
So what does the architecture of your application scream? When you look at the top-level directory structure, and the source files in the highest-level package, do they scream "Health Care System," or "Accounting System," or "Inventory Management System"? Or do they scream "Rails," or "Spring/Hibernate," or "ASP"?
~ Robert C. Martin
Any comment that forces you to look in another module for the meaning of that comment has failed to communicate to you and is not worth the bits it consumes.
~ Robert C. Martin
To build a system with a design and an architecture that minimize effort and maximize productivity, you need to know which attributes of system architecture lead to that end.
~ Robert C. Martin
Every software system provides two different values to the stakeholders: behavior and structure. Software developers are responsible for ensuring that both those values remain high. Unfortunately, they often focus on one to the exclusion of the other.
~ Robert C. Martin
Test code is just as important as production code. It is not a second-class citizen. It requires thought, design, and care. It must be kept as clean as production code.
~ Robert C. Martin
The first value of software is its behavior. Programmers are hired to make machines behave in a way that makes or saves money for the stakeholders. We do this by helping the stakeholders develop a functional specification, or requirements document. Then we write the code that causes the stakeholder's machines to satisfy those requirements.
~ Robert C. Martin
More precisely, the Law of Demeter says that a method f of a class C should only call the methods of these: • C • An object created by f • An object passed as an argument to f • An object held in an instance variable of C
~ Robert C. Martin
Frameworks are tools to be used, not architectures to be conformed to. If your architecture is based on frameworks, then it cannot be based on your use cases.
~ Robert C. Martin
LEAVING OPTIONS OPEN
~ Robert C. Martin
When the stakeholders change their minds about a feature, that change should be simple and easy to make. The difficulty in making such a change should be proportional only to the scope of the change, and not to the shape of the change.
~ Robert C. Martin
When the I metric is 1, it means that no other component depends on this component (Ca = 0), and this component does depend on other components (Ce > 0). This is as instable as a component can get; it is irresponsible and dependent. Its lack of dependents gives it no reason not to change, and the components that it depends on may give it ample reason to change.
~ Robert C. Martin
Master programmers think of systems as stories to be told rather than programs to be written.
~ Robert C. Martin
The first concern of the architect is to make sure that the house is usable — not to ensure that the house is made of bricks.
~ Robert C. Martin
One of your jobs as an embedded software developer is to firm up that line. The name of the boundary between the software and the firmware is the hardware abstraction layer (HAL) (Figure 29.4). This is not a new idea: It has been in PCs since the days before Windows.
~ Robert C. Martin
there's no such thing as a program that is impossible to change. However, there are systems that are practically impossible to change, because the cost of change exceeds the benefit of change. Many systems reach that point in some of their features or configurations.
~ Robert C. Martin
The Three Laws of TDD You are not allowed to write any production code until you have first written a failing unit test. You are not allowed to write more of a unit test than is sufficient to fail—and not compiling is failing. You are not allowed to write more production code that is sufficient to pass the currently failing unit test.
~ Robert C. Martin
The outer circles are mechanisms. The inner circles are policies.
~ Robert C. Martin