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 architecture
Search
Marcus Biel
April 19, 2018
Programming
2
150
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
Tweet
Share
More Decks by Marcus Biel
See All by Marcus Biel
Java, Turbocharged!
marcusbiel
0
25
Java, Turbocharged!
marcusbiel
0
47
Java, Turbocharged!
marcusbiel
0
89
Java, Turbocharged!
marcusbiel
0
19
Java, Turbocharged
marcusbiel
0
17
Listen to Dad
marcusbiel
0
31
Java, Turbocharged
marcusbiel
0
76
Java, Turbocharged
marcusbiel
0
43
A craftsman’s guide to designing clean architecture (german)
marcusbiel
0
46
Other Decks in Programming
See All in Programming
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
180
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
170
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
350
甘い香りに誘われてVanilla Extractを1年間運用してみた
miyahkun
1
110
元気予報
suu_mire0726
0
860
SwiftUI Performance 不要なViewの再描画と更新を抑える
bigamitiongit
1
160
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
330
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
630
ONE WEDGE_company_guide
1wedge_one
0
380
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
230
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
318
37k
Code Review Best Practice
trishagee
54
15k
Rails Girls Zürich Keynote
gr2m
91
13k
The Invisible Customer
myddelton
114
12k
GraphQLとの向き合い方2022年版
quramy
31
12k
Thoughts on Productivity
jonyablonski
57
3.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.5k
A Philosophy of Restraint
colly
196
16k
Done Done
chrislema
178
15k
Being A Developer After 40
akosma
56
580k
The Illustrated Children's Guide to Kubernetes
chrisshort
29
46k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
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