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
BazillionQuotes.com
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
BazillionQuotes.com
The business rules should be the most independent and reusable code in the system.
~ Robert C. Martin
BazillionQuotes.com
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
BazillionQuotes.com
SPECIAL CASE PATTERN
~ Robert C. Martin
BazillionQuotes.com
The fact is that making messes is always slower than staying clean, no matter which time scale you are using.
~ Robert C. Martin
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
LEAVING OPTIONS OPEN
~ Robert C. Martin
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
Master programmers think of systems as stories to be told rather than programs to be written.
~ Robert C. Martin
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
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
BazillionQuotes.com
The outer circles are mechanisms. The inner circles are policies.
~ Robert C. Martin
BazillionQuotes.com
