Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
A craftsman’s guide to designing clean architec...
Search
Marcus Biel
April 19, 2018
Programming
190
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A craftsman’s guide to designing clean architecture
In this talk, Software Craftsman Marcus Biel describes how to design a Clean Architecture
Marcus Biel
April 19, 2018
More Decks by Marcus Biel
See All by Marcus Biel
Java, Turbocharged!
marcusbiel
0
52
Java, Turbocharged!
marcusbiel
0
68
Java, Turbocharged!
marcusbiel
0
130
Java, Turbocharged!
marcusbiel
0
50
Java, Turbocharged
marcusbiel
0
45
Listen to Dad
marcusbiel
0
60
Java, Turbocharged
marcusbiel
0
110
Java, Turbocharged
marcusbiel
0
76
A craftsman’s guide to designing clean architecture (german)
marcusbiel
0
73
Other Decks in Programming
See All in Programming
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.1k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
540
気持ちぃ〜角丸 Squircle
ryu1013
0
310
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
630
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
ActionController meets Protocol Buffers
sorah
0
520
golang-bob.pdf
iwatsukayura
0
130
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
880
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Un-Boring Meetings
codingconduct
0
460
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
The agentic SEO stack - context over prompts
schlessera
0
970
Tell your own story through comics
letsgokoyo
1
1.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
4 Signs Your Business is Dying
shpigford
187
23k
We Are The Robots
honzajavorek
0
400
Transcript
Marcus Biel, Software Craftsman Virtual Java User Group | 19.
April 2018 A craftsman’s guide to designing clean architecture
Copyright 2018 Marcus Biel https://cleancodeacademy.com About me Clean Code Evangelist
• Founder of Clean Code Academy • Public Speaker • Author • Java Influencer • JCP Member • Clean Code Coach • Java Consultant @MarcusBiel
[email protected]
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining a Clean Architecture
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining a Clean Architecture
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining a Clean Architecture
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining a Clean Architecture MODULES
PACKAGES CLASSES METHODS
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining a Clean Architecture Domain
Infrastructure HTTPS REST SOAP
Copyright 2018 Marcus Biel https://cleancodeacademy.com Foundation of a Clean Architecture
‣ Coupling and Cohesion ‣ Other Building Blocks
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Coupling Tight Coupling Loose
Coupling
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Coupling Tight Coupling Loose
Coupling
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Coupling Tight Loose
Copyright 2018 Marcus Biel https://cleancodeacademy.com Coupling Strength ‣ Distance of
the Components ‣ Type of Coupling ‣ Timing of Coupling
Copyright 2018 Marcus Biel https://cleancodeacademy.com Distance of the Components MODULES
PACKAGES CLASSES METHODS
Copyright 2018 Marcus Biel https://cleancodeacademy.com Distance of the Components
Copyright 2018 Marcus Biel https://cleancodeacademy.com Distance of the Components
Copyright 2018 Marcus Biel https://cleancodeacademy.com Distance of the Components
Copyright 2018 Marcus Biel https://cleancodeacademy.com Distance of the Components
Copyright 2018 Marcus Biel https://cleancodeacademy.com Type of Coupling
Copyright 2018 Marcus Biel https://cleancodeacademy.com Timing of Coupling
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Cohesion Low Cohesion High
Cohesion
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Cohesion Low Cohesion High
Cohesion
Copyright 2018 Marcus Biel https://cleancodeacademy.com Low High Defining Cohesion
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Cohesion GeneralUtils create(Customer) validate(Car)
write(Report)
Copyright 2018 Marcus Biel https://cleancodeacademy.com Defining Cohesion CustomerService sellTo(Customer) invoice(Customer)
help(Customer)
Copyright 2018 Marcus Biel https://cleancodeacademy.com help(Customer) invoice(Customer) Defining Cohesion CustomerSales
sellTo(Customer) CustomerAccounting CustomerService
Copyright 2018 Marcus Biel https://cleancodeacademy.com Cohesion Types ‣ Logical Cohesion
‣ Business Cohesion
Copyright 2018 Marcus Biel https://cleancodeacademy.com Cohesion Key Point High Cohesion
requires in-depth knowledge of the domain.
Copyright 2018 Marcus Biel https://cleancodeacademy.com Foundation of a Clean Architecture
‣ Coupling and Cohesion ‣ Other Building Blocks
Copyright 2018 Marcus Biel https://cleancodeacademy.com Other Building Blocks ‣ Encapsulation
‣ Naming ‣ Size
Copyright 2018 Marcus Biel https://cleancodeacademy.com Encapsulation technically enforces of how
the system should be used Getters and Setters violate encapsulation. Use package private more often! http://bit.ly/EvilGettersAndSetters
Copyright 2018 Marcus Biel https://cleancodeacademy.com Other Building Blocks ‣ Encapsulation
‣ Naming ‣ Size
Copyright 2018 Marcus Biel https://cleancodeacademy.com Clean Names Key Points Clean
names drive high cohesion (Customer, AccountNumber) Use service pattern judiciously Clean names are team work Rename on new insights
Copyright 2018 Marcus Biel https://cleancodeacademy.com Other Building Blocks ‣ Encapsulation
‣ Naming ‣ Size
Copyright 2018 Marcus Biel https://cleancodeacademy.com Size Key Points MODULES PACKAGES
CLASSES METHODS
Copyright 2018 Marcus Biel https://cleancodeacademy.com What is Clean Architecture? I
would advise students to pay more attention to the fundamental ideas rather than the latest technology. The technology will be out-of-date before they graduate. Fundamental ideas never get out of date. — David L. Parnas “ ”
Marcus Biel, Software Craftsman Virtual Java User Group | 19.
April 2018 A craftsman’s guide to designing clean architecture