본문 바로가기
Project/뿌대식: 부산대학교 학식 알리미

뿌대식: 리팩토링

by songmoro 2024. 8. 13.
728x90

근황

졸업 발표를 준비하느라 포스팅하진 않았지만, 뿌대식은 그간 많은 변화가 있었습니다.

 

우선, 기능적으로는 지정한 식당의 식단을 시간에 맞춰 보여주는 위젯을 추가하거나, 데이터베이스에 수동으로 업데이트해주던 방식에서 주기적으로 파싱해 데이터베이스에 업데이트하도록 교체했습니다.(부산대학교 측에 문의해 비상업적 목적으로 데이터를 사용하는 걸 승인받았습니다.)

 

내부적으로는 뷰 요소를 조금 더 유저친화적으로 개편하고, 한 번에 3MB 가까이 소모되던 네트워크 사용량을 로직 개선으로 1MB로 줄였습니다.

 

코드 퀄리티보다 기능 개발에 초점을 맞춰 진행하다 보니 기술 부채가 꽤나 많이 쌓여버려서, 부스트캠프가 끝난 지금 시간 여유가 있을 때 내부 안정화를 진행하려고 합니다.

 

 

프로젝트 다이어그램

클래스 다이어그램

 

호출 그래프

(호출 그래프는 가로로 너무 긴 탓인지 이미지가 깨져서 대신 링크 첨부합니다.)

 

 

호출 그래프 링크

 

 

문제점

일단 지금 당장 눈에 보이는 문제는 다음과 같습니다.

 

  1. 식단은 정적 데이터로 데이터를 불러온 시점에서 T초가 지난다고 새로운 식단으로 바뀔 일이 없다. 하지만 현재 로직 상 캠퍼스를 전환하면 데이터를 새로 불러와서 네트워크 사용량의 오버헤드가 생기거나, 연속된 데이터 요청으로 문제가 발생할 수 있다.
  2. 노션 API의 request, response body의 depth로 인해 이를 처리하는 걸 담당하는 구조체 또한 depth가 깊고 복잡해진다.
  3. 식당 타입과 기숙사 타입은 결국 같은 데이터(식단, 시간, 메뉴명 등)를 제공하지만 둘로 나누어 구현해서 변경 사항이 생길 때마다 두 타입을 각각 수정해야 한다.
  4. 기능 개발에 급급해 로직만 조금 다른 중복 메서드가 존재하거나, 사용하지 않는 메서드가 존재한다.
  5. 함수의 로직이 복잡하고, 추상화의 정도가 일치하지 않아 가독성이 안 좋다.
  6. 메인 뷰 모델에서 모든 일을 처리해 목표한 코드를 찾기 어렵고, 코드의 흐름을 파악하기 어렵다.(디폴트 데이터, api 요청, 뷰 관련 처리)
  7. 메인 뷰의 뷰 컴포넌트들이 알아보기 어려울 정도로 늘어놓아져 있다.
  8. Widget에서 식당마다 다른 식사 시간으로 인해 혼란이 발생한다.
  9. Widget에서 식당 이름의 길이로 인해 식단 혹은 식당 이름이 제대로 표시되지 않는다.

 

해서, 목표한 작업입니다.

  1. 식당, 기숙사 타입 추상화
  2. 네트워크 사용량 개선
  3. 노션 API request, response 모델 개선
  4. 뷰 요소 컴포넌트화
  5. 메서드 로직 개선
  6. Widget 개선

 

추가로 염두하고 있는 작업

  1. Test
  2. 시스템 퍼포먼스 분석 및 개선
  3. 에러 핸들링
  4. 추가적인 기능 물색

 

 

 

728x90