logo

Quotes About Design

The source code of higher-level services must not contain any specific physical knowledge (e.g., a URI) of any lower-level service.
~ Robert C. Martin
Architects separate functionality based on how, why, and when it changes, and then organize that separated functionality into a hierarchy of components.
~ Robert C. Martin
THE ACYCLIC DEPENDENCIES PRINCIPLE Allow no cycles in the component dependency graph.
~ Robert C. Martin
The goal of the architect is to create a shape for the system that recognizes policy as the most essential element of the system while making the details irrelevant to that policy. This allows decisions about those details to be delayed and deferred.
~ Robert C. Martin
But then closely related concepts should not be separated into different files unless you have a very good reason. Indeed, this is one of the reasons that protected variables should be avoided.
~ Robert C. Martin
If we tried to design the component dependency structure before we designed any classes, we would likely fail rather badly. We would not know much about common closure, we would be unaware of any reusable elements, and we would almost certainly create components that produced dependency cycles. Thus the component dependency structure grows and evolves with the logical design of the system.
~ Robert C. Martin
A good architecture makes it unnecessary to decide on Rails, or Spring, or Hibernate, or Tomcat, or MySQL, until much later in the project. A good architecture makes it easy to change your mind about those decisions, too. A good architecture emphasizes the use cases and decouples them from peripheral concerns
~ Robert C. Martin
The word "architecture" is often used in the context of something at a high level that is divorced from the lower-level details, whereas "design" more often seems to imply structures and decisions at a lower level. But this usage is nonsensical when you look at what a real architect does.
~ Robert C. Martin
a good architecture must support: • The use cases and operation of the system. • The maintenance of the system. • The development of the system. • The deployment of the system.
~ Robert C. Martin
The moral of the story is simple: 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 business rules should be the most independent and reusable code in the system.
~ 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
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
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
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
Whether you are designing systems or individual modules, never forget to use the simplest thing that can possibly work.
~ Robert C. Martin
Databases should usually not be considered as a major factor of the design and implementation.
~ Robert C. Martin
structured programming, object-orient programming, and functional programming.
~ Robert C. Martin
During this design process, we rarely considered whether we were performing analysis, design, or implementation
~ Robert C. Martin
Notice how well those three align with the three big concerns of architecture: function, separation of components, and data management.
~ Robert C. Martin
What do we talk about when we talk about architecture?
~ Robert C. Martin
Programming is an act of creation. When we write code we are creating something out of nothing. We are boldly imposing order upon chaos.
~ Robert C. Martin