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
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
440
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
280
Building Dashboards as a Hobby
egmc
0
100
20分で完全に理解するGrafanaダッシュボード
hamadakoji
3
490
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
5
500
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
JAWS-UG Bedrock Claude Night
yamahiro
3
580
web-application-security
matsuihidetoshi
0
160
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.7k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
170
オーナーシップを持つ領域を明確にする
konifar
13
3.1k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
43
6.7k
Producing Creativity
orderedlist
PRO
337
39k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Practical Orchestrator
shlominoach
182
9.7k
Product Roadmaps are Hard
iamctodd
44
9.7k
The Language of Interfaces
destraynor
151
23k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
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