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
Code architecture for Android apps
Search
Catalin Morosan
November 12, 2015
Technology
0
96
Code architecture for Android apps
Talk given at Devfest Romania 2015. (
http://devfest.ro
)
Catalin Morosan
November 12, 2015
Tweet
Share
More Decks by Catalin Morosan
See All by Catalin Morosan
ReactiveX Basics
kaciula
0
80
Other Decks in Technology
See All in Technology
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
130
関数型プログラミングで 「脳がバグる」を乗り越える
manabeai
1
190
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
Tokyo_reInforce_2025_recap_iam_access_analyzer
hiashisan
0
190
怖くない!はじめてのClaude Code
shinya337
0
400
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
300
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.7k
NewSQLや分散データベースを支えるRaftの仕組み - 仕組みを理解して知る得意不得意
hacomono
PRO
2
170
Core Audio tapを使ったリアルタイム音声処理のお話
yuta0306
0
190
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
130
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
280
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
1
17k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Visualization
eitanlees
146
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
300
A Tale of Four Properties
chriscoyier
160
23k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Designing for Performance
lara
610
69k
Agile that works and the tools we love
rasmusluckow
329
21k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
How to Ace a Technical Interview
jacobian
278
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Transcript
Code architecture for complex apps Catalin Morosan
In the beginning
In the beginning
After x client change requests
After x client change requests
Architecture
Architecture • achieve a high-level separation of concerns by layering
Architecture • achieve a high-level separation of concerns by layering
• group of best practices in code
Architecture goals
Architecture goals • high maintainability
Architecture goals • high maintainability • low technical debt
Architecture goals • high maintainability • low technical debt •
independent of frameworks ◦ UI, database, network
Architecture goals • high maintainability • low technical debt •
independent of frameworks ◦ UI, database, network • testable ◦ loose coupling
Architecture goals • high maintainability • low technical debt •
independent of frameworks ◦ UI, database, network • testable ◦ loose coupling • not over-engineered
Architectures
Architectures • Clean Architecture ◦ Uncle Bob
Architectures • Clean Architecture ◦ Uncle Bob • Hexagonal Architecture
(Ports & Adapters) ◦ Alistair Cockburn
Architectures • Clean Architecture ◦ Uncle Bob • Hexagonal Architecture
(Ports & Adapters) ◦ Alistair Cockburn • Flux Architecture ◦ Facebook
Architectures • Clean Architecture ◦ Uncle Bob • Hexagonal Architecture
(Ports & Adapters) ◦ Alistair Cockburn • Flux Architecture ◦ Facebook • VIPER Architecture ◦ mutual mobile (iOS)
Design Patterns (Mini Architectures)
Design Patterns (Mini Architectures) • MVC ◦ Model View Controller
Design Patterns (Mini Architectures) • MVC ◦ Model View Controller
• MVP ◦ Model View Presenter
Design Patterns (Mini Architectures) • MVC ◦ Model View Controller
• MVP ◦ Model View Presenter • MVVM ◦ Model View ViewModel
Design Patterns (Mini Architectures) • MVC ◦ Model View Controller
• MVP ◦ Model View Presenter • MVVM ◦ Model View ViewModel • Repository
The architecture proposal
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
Package by feature vs by layer
Package by feature vs by layer • Horizontal slicing ◦
activities, views, presenters
Package by feature vs by layer • Horizontal slicing ◦
activities, views, presenters • Vertical slicing ◦ per feature / user story
Sample project github.com/kaciula/archiman
None
None
None
Balance • abstract complexity • over-engineering VS • YAGNI •
KISS
Thanks google.com/+CatalinMorosan