Upload
-
View
147
Download
4
Embed Size (px)
Citation preview
staccatoAndroid 를 더 잘 개발하려면 ?MVVM, MVP 패턴 그리고 그 너머…
TRACK 1
윤승용 BBBTechInc.
.. ..
핵심 페이지 3-4 페이지 , 드로잉 모듈 , 네트워크 모듈 포함
개발인원 4 명 , 런칭까지 16 개월 이상 소요
핵심 페이지 8-9 페이지 , 드로잉 모듈 , 이미지 프로세싱 모듈 , 네트워크 모듈 , Notification 모듈 등 포함
개발인원 3 명 , 런칭까지 12 개월 가량 소요
규모에서 차이가 많이 났지만 , 개발 기간이 더 적게 걸린 여러가지 이유 중가장 큰 이유는 Architecture 패턴을 도입했기 때문이라 생각함
규모가 큰 프로젝트를 진행할수록 아키텍쳐의 중요도는 높아짐
Good Architecture?
• Independent•Testable•Reusable•Expandable
• Independent•Testable•Reusable•Expandable
First Android
Activity
Event Handler Presentation Logic
Data Business Logic
Flow Control
SketchKit 프로젝트 알파버전 완성 당시에 Drawing Activity 라인은 1500 줄에 육박했음 ..
MVC Pattern
Model
View
Controller
Event
Data
Business Logic
Event Handler
Presentation Logic
Flow Control
Model
View Controller
Event
Data
Business Logic
Event HandlerPresentation Logic Flow Control
Activity
MVP Pattern
Model
View
Presenter
Event
Event Handler
Presentation Logic
Data
Business Logic
Flow Control
Model
View
Presenter
Event
Event Handler
Presentation Logic
Data
Business Logic
Flow Control
Activity
MVVM Pattern
Model
View
ViewModel
Event
Event Handler
Presentation Logic
Data
Business Logic
Flow Control
DataBinding
Model
View
ViewModel
Event
Event Handler
Presentation Logic
Data
Business Logic
Flow Control
ActivityDataBinding
Android DataBinding 라이브러리의 등장으로 MVVM 구현이 수월해졌음Android 2.1(API 레벨 7 이상 ) 까지 Android 플랫폼의 모든 이전 버전에서 사용할 수 있습니다 .
MVP vs MVVMOn Android
MVP
Pros• 코드 구조를 이해하기 쉽다• Test 가 상대적으로 더 쉽다• Activity/Fragment 의 역할이 명확하다
Cons• View 와 Presenter 간의 의존성이 높다• 작은 규모의 프로젝트에서는 명백한 OverEngineering
MVVM
Pros• 구현 속도가 빠르다• 코드 재사용성이 상대적으로 높다• View 와 ViewModel 간의 독립성을 보장
Cons• IDE 의 Data-Binding Library Support 가 더 필요함• 큰 규모로 갈수록 코드가 복잡해지기 쉬움
Clean Architrcture
https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html 참고
Android Framework
Presenter
Model
View
External Framework
Repository Pattern
Server API
Database
Usecase
Android Framework
Presenter
Model
View
External Framework
Repository Pattern
Server API
Database
Usecase
파란 테두리 영역의 Independent 를 최대한 보장하는 것이 목표
http://martinfowler.com/eaaCatalog/repository.html 참고
http://blog.feedpresso.com/2016/01/25/why-you-should-use-rxjava-in-android-a-short-introduction-to-rxjava.html 참고
http://jakewharton.github.io/butterknife/ 참고
https://www.youtube.com/watch?v=plK0zyRLIP8 참고
Pros• 코드의 가독성이 훨씬 뛰어남• 핵심 로직에 대한 Test 가 쉬움• 협업이 엄청 수월해짐
Cons• OverEngineering 의 향연• 초기 진입장벽이 높음
Conclusion
여전히 Silver Bullet 은 없지만
We will find a weapon. we always have.
[email protected]윤승용 BBBTechInc.
Thank you