The Clean Architecture
The Clean Architecture - Note 1
Not only does a good architecture meet the needs of its users, developers, and owners at a given point in time, but it also meets them over time
The Clean Architecture - Note 2
You think good architecture is expensive, try bad architecture. —Brian Foote and Joseph Yoder
The Clean Architecture - Note 3
Architecture is a hypothesis, that needs to be proven by implementation and measurement. —Tom Gilb
The Clean Architecture - Note 4
When software is done right, it requires a fraction of the human resources to create and maintain. Changes are simple and rapid. Defects are few and far between. Effort is minimized, and functionality and flexibility are maximized.
The Clean Architecture - Note 5
The goal of software architecture is to minimize the human resources required to build and maintain the required system
The Clean Architecture - Note 6
If you give me a program that works perfectly but is impossible to change, then it won’t work when the requirements change, and I won’t be able to make it work. Therefore the program will become useless. If you give me a program that does not work but is easy to change, then I can make it work, and keep it working as requirements change. Therefore the program will remain continually useful.
The Clean Architecture - Note 7
Software—the stuff of computer programs—is composed of sequence, selection, iteration, and indirection. Nothing more. Nothing less.
The Clean Architecture - Note 8
First of all, a software architect is a programmer; and continues to be a programmer. Never fall for the lie that suggests that software architects pull back from code to focus on higher-level issues. They do not! Software architects are the best programmers, and they continue to take programming tasks, while they also guide the rest of the team toward a design that maximizes productivity. Software architects may not write as much code as other programmers do, but they continue to engage in programming tasks.
The Clean Architecture - Note 9
The architecture of a software system is the shape given to that system by those who build it. The form of that shape is in the division of that system into components, the arrangement of those components, and the ways in which those components communicate with each other.
The Clean Architecture - Note 10
Think of Main as the dirtiest of all the dirty components
The Clean Architecture - Note 11