하루에 0.01%라도 성장하자

카테고리 없음

Android - MVP#1 패턴공부. 하지만 그전에 알아야 할 것

뚠님 2021. 7. 11. 15:52
반응형

안드로이드 디자인 패턴에 대해서 공부중이다.

해당 항목으로 공부중인 이유는 여러 이유가 있겠지만 그중에서도... 우선.. 기술에 대한 도태?를 느껴서가 가장 큰것 같다.

 

해당 글을 쓰기전 여담이지만, 현재 다니는 회사에서 하이브리드 앱을 만들고 있다보니 아무래도 100% 네이티브 앱보다는 안드로이드 기술에 대한 의존성이 덜하고, Fornt의 영역이 웹이 90%, 네이티브가 10% 정도를 차지하다 보니 자연스럽게 웹개발을 하고 있다...

 

거기에 인력 부족으로 서버와 관리자페이지 등의 Spring Boot 개발도 같이 하고 있다. 이러다 보니 안드로이드 개발자라는 전문성에 뭔가.....혼란이 오고 최신 안드로이드 기술 동향등에 대한 갈증을 느끼게 되었다.

 

처음 이직을 할때는 안드로이드 전문 개발자가 되기 위해 왔는데, 여기서는 어설픈 풀스택 개발을 하고 있다.

( 어디서 풀스택 개발자에요! 라고 말도 못할 실력.. )

 

그러다가 현재 안드로이드 기술 현주소를 확인하다가 앱개발을 하고 있는 회사에서는 어떤 스킬들을 원하는지 보게 되었고 그중 하나가 MVP 다.

 

 

우선 내가 파악한 ' 요즘 안드로이드 개발자라면 가져야할 필수 기술 항목'은 이렇다.

 

  • 디자인 패턴
    • MVP와 MVVM에 대한 이해
    • 그리고 그 차이와 장단점에 대한 이해. 이게 진짜 중요함
    • 그리고 MVP, MVVM 에 나오는 Model 의 세분화 ( Repository 패턴 ) 
  • 비동기 처리
    • Coroutine, Rx 의 대한 기술 이해
    • 사실 두개는 비슷한 맥락이고 옵저빙과 동시성 프로그래밍이라는 특징이 있는데, 보면 둘중 하나를 완벽하게 이해하면 원리에 대해서는 크게 차이가 없더라
    • 다만 Rx는 학습 비용이 크고, 이를 제대로 활용하려면 많은 경험이 필요하다고는 하더라..
  • Bitmap 
    • 이거는 요즘 코딩테스트를 보면 이전에 Glide로 처리 했던 방식을 사용하지 않고, 다 BitmapFactory를 사용하던데 이유는 아직 모르겠음.. 단순히 테스트 개념이라 이미지를 비트맵 형태로 뿌리는 걸 알고 있는가?를 확인하기 위한건지... 아니면 Glide에 내가 모르는 단점이 있어서 타 회사에서 사용을 지양하는 건지는 모르겠다..
  • RecyclerView
    • 이건 어디가나 똑같음..
    • 웹사이트 개발에 신입을 뽑을 때 '게시판을 만들 수 있나요?' 또는 '댓글과 대댓글을 관리 할 수 있나요?' 등의 대표적인 수준 체크용 기술
    • 단 이전에는 item.xml 을 만들고 그걸 단순히 뿌릴줄만 알면 됩니다! 에서 MVP, MVVM등의 패턴을 사용해서 뿌려야 한다는게 가장큰 포인트.
  • databinding
    • 사실 bind라는 개념은 웹이든 앱이든 많이 쓰는 개념인데 특히 이번에 안드로이드에서 MVVM이 가능하게 된 이유도 databinding이라는걸 지원하기 시작하면서 부터다.
    • 그러면서 동시에 View와 ViewModel 의 통신에서 ViewModel 이 View에 Noti를 주지 않아도 되는 상황이 가능하게 된것도 이 기술 때문.
    • 개념을 아는 것도 좋지만 사용법도 알아야 함. 이게 중요.
    • xml에서 구현되는 코드들과, MVVM에서 구현할 때 사용하는 법을 알아두면 좋다.
  • ViewHolder
    • 이거는 RecyclerView를 사용하면 무조건 들어봤을 것.
    • 다만 요즘에는 리스트 형태로 그려지는 UI가 많고 또 그려야 하는 UI가 많다보니 어떻게 그리는 것이 효율적인가에 대한 의견들도 많았을 것.
    • 이전에는 RecyclerView에 단순히 아이템만 뿌렸다면, 요즘에는 (사실 요즘도 아님... 나만 요즘임.. ) Header와 Footer도 RecyclerView에서 뿌린다는 것
  • ConstraintLayout
    • 이거는 아아아아아아아ㅏ앙주 오래전에 이야기 나왔고 iOS의 AutoLayout 개념을 가져온 것
    • 이거 하나면 레이아웃 금방 만든다곤 하는데 솔직히 나는 아직 경험을 안해봐서 모르겠다.
    • 이것도 요즘 필수 
  • Network
    • 예전부터 사용성이 좋았던 retrofit과 volley등이 사용됨.
    • 둘중 하나만 알고 있어도 뭐... 다만 Coroutine, Rx를 이용한 통신이여야 한다는 것
    • 단순히 retrofit docs만 보고 그대로 따라하면 피본다.
  • Unit, UI Test
    • 제일 중요한것
    • JUnit을 이용한 unit테스트와 테스트 코드, UI Espresso를 이용한 UI 테스트
    • 사실 위에 언급한 디자인 패턴을 사용하는 가장 큰 이유중 하나는 저 Unit테스트를 보다 더 효율적이고 깊게 할 수 있는 코드( TDD지향 ) 를 작성하기 위함이다.
  • Clean Architecture
    • 과녁 이미지 하면 떠오르는 것. 클린 아키텍처
    • 2012년에 처음 언급되긴 했는데 실제로 적용되고 많은 기업에서 효과를 보고 있다는 이 아키텍처는 알아 두면 좋다.
    • 다만 아키텍처에 대한 이해가 완벽해야만 가능하며, 아직까지 과연 클린아키텍처는 정말로 클린한가?에대한 논의가 많긴함.
    • 사실 아키텍처라는게 어떻게 사용하느냐에 따라 다르기 때문에 개인 취향과 경험이 자연스럽게 적용되면서 100% 똑같을 수 없는게 맞다. 
    • 다만 특정 아키텍처를 정하고 그것을 지향하는 코드를 작성하느냐 아니면 그냥 짜다보니까.. 같은 아키텍처로 작성하느냐의 차이는 하늘과 땅차이라는 것.

쓰다보니 너무 많이 썼다.

 

사실 이 글은 MVP 패턴을 공부하게 된 계기를 간단하게 쓰려고 했던 것 뿐인데... 무슨 안드로이드 기술 동향 같은 ( 그것도 이미 늦은 ) 글을 써버렸다.

 

 

반응형