매일 소비하는 다양한 미디어를 기록 할 수 있는 미디어 감상 아카이빙 서비스 입니다.
현재 제공 되는 3가지 핵심 기능은 다음과 같습니다.
Response 에서 공통적으로 받아오는 정보를 Wrapping 객체를 만들었습니다. 반복 작성되는 코드를 줄이고 제네릭을 사용하여 필요한 부분의 Response DTO를 만들어 이용하도록 만들어 DTO 작성시 필요한 정보만 담을 수 있도록 개선하였습니다.
이전 프로젝트에서 사용되던 Callback 객체를 사용하기 위해서는 반드시 Kotlin 확장 api 인 apply{} 와 also{} 를 호출하는 Boiler Plate Code가 있었습니다.
이를 개선하고자 개발자에게 익숙한 Design Pattern 인 Builder Pattern 의 방식을 빌려 필요한 동작을 lambda로 받는 Builder를 확장 프로퍼티로 선언했습니다. build() 함수 대신 기존에 사용하던 enqueue() 함수를 전달 매개 변수 없이 호출하면 사용되도록 이를 개선하였습니다. 또한 이 과정에서 Response 공통 body Wrapping 객체를 사용하지 않는 경우 사용할 수 없도록 제한하여 코드 사용자의 실수를 방지하고자 하는 설계를 했습니다.
결과적으로 기존의 Boiler Plate Code를 제거함과 더불어 보다 가독성을 높이고 실수를 줄일 수 있었습니다.