도입

이번 포스팅에서는 음악 플레이어의 ui관련 클래스들을 리팩토링할 예정이다.
리팩토링 결과를 먼저 확인하고 리팩토링 과정을 공유할 예정이다.


결과

AS-ISTO-BE

실습

Step1. Package 재구성 및 Rename

AS-ISTO-BE
비교
문제점 및 해결책 1규칙이 없는 네이밍Renaming을 통해 명확화
문제점 및 해결책 2제거 가능한 Interface 존재Interface 최소화

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

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

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

Step2. ViewHolder 추상화

AS-ISTO-BE

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

Step3. 테스트 코드

테스트 코드를 작성하려 했으나 이후 변경될 service package에서 구조가 많이 변경될 예정이라 추후 작성 예정이다.
ui 관련 클래스 안에 View와 Business logic이 섞여 있다. 그래서 Unit 테스트가 어려울 것 같다. 그래서 리팩토링을 통해 분리를 진행해야 하는데 고민 중

profile
행복을 고민하는 블로거

0개의 댓글

관련 채용 정보