Clean Architecture
About me
- Lucas
- From Brazil
- 31 years old
- Software Engineer
- Uncle Bob Fan
A very sad story
- Most of the business rules inside the database
- Total of zero unit tests (or integration tests)
- Every "layer" deeply coupled
- Front end attached to angular js
Resulting
Two kinds of value
Behavioural x Structure
"The goal of software architecture is to minimize the human resources required to build and maintain the required system"
SOLID
- SRP
- OCP
- LSP
- ISP
- DIP
SRP
Single Responsibility Principle
"A class should have only one reason to change."
DIP
Dependency Inversion Principle
VS
Clean Architecture
Entities
- The most important part of the software
- Business rules that would exist even without the application
- The things that remains true no matter what is happening
- The highest level rules
Use Cases
- Orchestrate the flow of data
- An action performed by a client
- Rules for the application being executed
Port / Adapters
- Everything note directly related to business rules
- Frameworks and Drivers
- Data base
- User interface
- Http Client
- Controllers
Some benefits
- Testability
- Easier to reason about
- Decoupling
- Protecting the most important thing (business rules)
Last thoughts
- Keep options open
- Technology changes real fast
- Make things as simple as possible
- Code for other people
Thanks!
Clean Architecture
By Lucas Rodrigues
Clean Architecture
- 322