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 07, 2018
Programming
1
550
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
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
Java 22 Overview
kishida
1
180
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
1
110
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
110
Code Reviews
bkuhlmann
4
890
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
雑に思考を整理する技術と効能
konifar
60
29k
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
420
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
950
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.3k
SIMD Parallel Programming with the Vector API
josepaumard
0
180
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
380
Let's learn code review
riofujimon
2
430
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
121
39k
For a Future-Friendly Web
brad_frost
172
9k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
A Philosophy of Restraint
colly
197
16k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Building a Modern Day E-commerce SEO Strategy
aleyda
17
6.4k
BBQ
matthewcrist
80
8.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Typedesign – Prime Four
hannesfritz
36
2.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
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