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
Clean Architecture
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Thibaut Coutard
January 27, 2020
Technology
50
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Clean Architecture
Short introduction about Clean Architecture
Thibaut Coutard
January 27, 2020
More Decks by Thibaut Coutard
See All by Thibaut Coutard
iOS ecosystem
coutart
0
37
Tests
coutart
0
60
Iterate your Klingon
coutart
0
130
Workshop : CI - CD using Bitrise
coutart
0
79
Internationalisation
coutart
0
40
Other Decks in Technology
See All in Technology
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
150
Claude Teamプランの コスト最適化を考える
rfdnxbro
1
820
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
150
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
紙 to デジタル
ichien178
0
410
「ミスを許さない手順書」を作ってみた 〜 個人的にはこれ以上できることはあまりなさそう/20260827-ssmjp-operation-procedure-update
opelab
15
16k
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
470
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
370
AI駆動開発をチームに根付かせる - 「1行も書かない」チームがHarnessを育てた1年 -
kenichirokimura
6
3.4k
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
150
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
260
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
670
Product Roadmaps are Hard
iamctodd
55
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
260
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Chasing Engaging Ingredients in Design
codingconduct
0
290
YesSQL, Process and Tooling at Scale
rocio
174
15k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
450
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Automating Front-end Workflow
addyosmani
1369
210k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Transcript
Clean Architecture Thibaut Coutard iOS developer
What is it ?
Uncle Bob • co-autor of the agile manifest • Author
of Clean Code • His blog cleancoder.com
Why ? • Easier to change • Easier to maintain
• Less bugs • Less developers needed
S.O.L.I.D
S.O.L.I.D • Single Responsibility Principle
S.O.L.I.D • Single Responsibility Principle • Open Close Principle
S.O.L.I.D • Single Responsibility Principle • Open Close Principle •
Liskov Substitution Principle
S.O.L.I.D • Single Responsibility Principle • Open Close Principle •
Liskov Substitution Principle • Interface Segregation Principle
S.O.L.I.D • Single Responsibility Principle • Open Close Principle •
Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle
S.O.L.I.D
S.ingle Responsibility Principle
S.ingle Responsibility Principle • One reason to change • Do
one thing • Responsible to one actor
O.pen Close Principle
O.pen Close Principle • Open for extension - Close for
modi fi cation • Protects higher-level components from changes in lower-level components
View Presenter Interactor Repository
L.iskov Substition Principle
L.iskov Substition Principle • Class substituted by another without breaking
the caller
Repository DBInterface Realm Gateway CoreData Gateway <I>
I.nterface Segregation Principle
I.nterface Segregation Principle • Harmful to depend on modules that
contains more than you need • Give only the essentials
UserAPI ———— +getAll +get +post UserList AddUser GetAllUserAPI ———— +getAll
<I> GetUserAPI ———— +get <I> PostUserAPI ———— +post <I> UserPro fi le
D.ependency Inversion Principle
D.ependency Inversion Principle • Flexible using abstraction • Interfaces less
volatiles • Never mention the name of anything concrete or volatile
D.ependency Inversion Principle Interactor Interactor Output Presenter
Clean Architecture
-M. Conway « organizations which design systems ... are constrained
to produce designs which are copies of the communication structures of these organizations. »
Clean Architecture • A good architecture allow changes • Be
careful of duplication that is not real • Premature decisions are ones that have nothing to do with business requirements • Draw Boundaries between business and GUI, GUI and DB, DB and business
None
None
None
None
None
None
None
Don’t depend on volatile things !
Going deeper • https://github.com/coutar-t/GW2Achievements • Clean Architecture, Robert C. Martin
• V.I.P.E.R • Clean Swift • https://speakerdeck.com/coutart/clean-architecture