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
OCI Oracle Database Services新機能アップデート(2025/06-2025/08)
oracle4engineer
PRO
0
180
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
210
組織を巻き込む大規模プラットフォーム移行戦略 〜50+サービスのマルチリージョン・マルチプロダクト化で学んだステークホルダー協働の実践〜 / Platform migration strategy engaging all stakeholders
toshi0607
2
200
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
120
データ分析エージェント Socrates の育て方
na0
8
2.7k
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
460
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
330
人工衛星のファームウェアをRustで書く理由
koba789
15
8.3k
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
130
DroidKaigi 2025 Androidエンジニアとしてのキャリア
mhidaka
2
390
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Navigating Team Friction
lara
189
15k
Writing Fast Ruby
sferik
628
62k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
BBQ
matthewcrist
89
9.8k
We Have a Design System, Now What?
morganepeng
53
7.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
GraphQLとの向き合い方2022年版
quramy
49
14k
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