본문

[2019.02.23] 123. Android 음악 플레이어 프로젝트 [Refactoring - ui]

도입

이번 포스팅에서는 음악 플레이어의 ui관련 클래스들을 리팩토링할 예정이다.

리팩토링 결과를 먼저 확인하고 리팩토링 과정을 공유할 예정이다.


결과

AS-IS

TO-BE


실습

Step1. Package 재구성 및 Rename

 

AS-IS

TO-BE

비교

개선사항

해결책

규칙이 없는 네이밍

Renaming을 통해 명확화

제거 가능한 Interface 존재

Interface 최소화

장르 관련 탭은 이후 제거 예정

 

Interface를 사용하면 의존성을 끊을 수 있다. 하지만 Interface를 너무 많이 사용하게되면 다른 사람이 혹은 내가 코드를 수정할 때 코드 흐름을 파악하는데 오래걸린다고 생각한다.(Interface의 구현 부분을 찾으면 깊이 들어가다보면 길을 잃을 때가 많다...)

그래서 제거 할 수 있는 Interface는 제거 했다.

 

Step2. ViewHolder 추상화

AS-IS

TO-BE

 

현재 하나의 RecyclerAdapter를 Audio 리스트와 Album의 리스트를 표현하고 있다. 그래서 1개의 MusicViewHolder 안에서 분기로 처리했다. MusicViewHolder에 많은 로직이 존재해 관리에 어려움이 있다.

그래서 공통되는 로직은 MediaViewHolder로 추상화 진행했다.

 

 

Step3. 테스트 코드

테스트 코드를 작성하려 했으나 이후 변경될 service package에서 구조가 많이 변경될 예정이라 추후 작성 예정이다.

ui 관련 클래스 안에 View와 Business logic이 섞여 있다. 그래서 Unit 테스트가 어려울 것 같다. 그래서 리팩토링을 통해 분리를 진행해야 하는데 고민 중

이건 다음 스탭에 진행하는 것으로 결정!

 

 

#안드로이드 음악플레이어 #음악 플레이어 개발 #Android MusicPlayer  #앱개발 #모바일앱개발 #어플개발

공유

댓글