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 07, 2018
Programming
690
1
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 07, 2018
More Decks by Marcus Biel
See All by Marcus Biel
Java, Turbocharged!
marcusbiel
0
52
Java, Turbocharged!
marcusbiel
0
67
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
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
350
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
170
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
660
sbt 2.0: takeoff
eed3si9n
0
150
速習iPhone Duo対応
yuukiw00w
2
980
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
240
すこし踏み込む CancellationToken
htkym
2
1.7k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
540
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
450
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
340
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Docker and Python
trallard
47
4.2k
So, you think you're a good person
axbom
PRO
2
2.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Ruling the World: When Life Gets Gamed
codingconduct
0
400
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
New Earth Scene 8
popppiees
4
2.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
Transcript
Marcus Biel, Software Craftsman Moscow | 7. 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 Moscow | 7. April 2018 A
craftsman’s guide to designing clean architecture