Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A craftsman’s guide to designing clean architec...
Search
Marcus Biel
April 07, 2018
Programming
1
640
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
Tweet
Share
More Decks by Marcus Biel
See All by Marcus Biel
Java, Turbocharged!
marcusbiel
0
36
Java, Turbocharged!
marcusbiel
0
55
Java, Turbocharged!
marcusbiel
0
100
Java, Turbocharged!
marcusbiel
0
30
Java, Turbocharged
marcusbiel
0
27
Listen to Dad
marcusbiel
0
45
Java, Turbocharged
marcusbiel
0
86
Java, Turbocharged
marcusbiel
0
57
A craftsman’s guide to designing clean architecture (german)
marcusbiel
0
58
Other Decks in Programming
See All in Programming
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
270
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
160
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
890
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
4.9k
GoのGenericsによるslice操作との付き合い方
syumai
3
690
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
120
童醫院敏捷轉型的實踐經驗
cclai999
0
190
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
800
Deep Dive into ~/.claude/projects
hiragram
8
1.5k
Select API from Kotlin Coroutine
jmatsu
1
190
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
400
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Bash Introduction
62gerente
614
210k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Statistics for Hackers
jakevdp
799
220k
Side Projects
sachag
455
42k
Balancing Empowerment & Direction
lara
1
370
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Become a Pro
speakerdeck
PRO
28
5.4k
Documentation Writing (for coders)
carmenintech
72
4.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
How to Ace a Technical Interview
jacobian
277
23k
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