🧐 문제 상황코드의 불필요한 중복, 로직의 분리 필요기존의 RecordView만 보더라도 총 240줄의 긴 파일이었고, 당장 뷰와 로직의 분리가 되지 않아 유지보수, 가독성 부분에서 안좋은 부분이 많았습니다. 또한 필터링 부분이나 불필요한 print, 중복되는 언래핑등으로 코드의 개선이 필요했습니다. 또한 이러한 중복적인 계산로직으로 카드가 나타나는 UI를 표시하는 부분이 안보이기도 하는 오류도 발생했다. RecordView만 봐도 알 수있듯이 시간에 쫓겨서 개발한 코드이기도 하고 이전에 작성한 코드이기도 하다보니 개선사항이 많이 보였다. 😎// 불필요한 중복 계산, 로직과 뷰의 분리 문제struct RecordView: View { // 너무 많은 속성 변수들 @AppStorage("authS..
→ Outline
🧐 문제 상황경로가 그려지지 않는 상황watchOS에서 경로가 그려지지 않는 문제가 발생했다. ☠️ Outline 앱에서 가장 중요한 경로가 그려지지 않는다는 것은 큰 문제였다...사실 문제는 간단하게 해결이 가능했다. 바로 iOS, watchOS에서 공통으로 쓰는 LocationManager의 startUpdate()라는 메서드를 watchOS에서 호출하지 않아서 생긴 문제였다. 분명 이전에는 잘 작동했는데... iOS앱에서 변경사항이 생기자 그것이 watchOS앱까지 영향이 가버린 Side Effect 즉, 부작용이라고 생각되었다.리팩토링의 필요성 ♻️이전에는 공통으로 쓰이는 메서드들이 많다보니 시간이 부족하기도 하고, 큰 생각없이 당연하게 Target Membership을 iOS, watchOS..
🧐 문제 상황Smooth 알고리즘 문제점 발견아래와 같이 Smooth 적용 후 크지 않은 경로는 아래와 같이 조금 뭉개지는 현상과 처음과 끝이 연결되지 않는 상황이 발생했다!💡 해결 과정기존 로직 뜯어보기기존의 코드를 살펴보았다. 내가 봐야할 부분은 마지막이 연결이 안되는 부분과 라인이 뭉개지는 이유였다. private func smoothLocations(_ locations: [CLLocationCoordinate2D]) -> [CLLocationCoordinate2D] { guard locations.count > 1 else { return locations } var smoothed: [CLLocationCoordinate2D] = [] ..
🧐 문제 설명1. 썸네일의 URL 불러오기썸네일이 Firebase와 같은 외부 저장소에 URL 형태로 저장되어, 불러올 때마다 네트워크 비용이 증가하고 여러 썸네일을 불러올 때 앱의 응답성에 안좋은 영향을 미칠 위험이 있다.이미지 경로를 직접 하드코딩하여 사용하는 방식은 이미지 경로를 변경하거나 파일 위치를 수정할 때마다 코드 전반에서 수정을 해야 하기 때문에 유지보수성이 떨어질 것으로 예상된다.2. RecordView, CardView에서 지도 로드 문제현재의 구현 방식은 지도를 반복적으로 렌더링하여 리소스를 소비하고 있었다. 이러한 비효율성은 앱의 성능 저하와 리소스 낭비로 이어지며, 특히 저사양 기기에서 더 큰 문제를 일으킬 수 있다고 판단했다.또한 실제로 실 기기 사용시 아래의 그림처럼 러닝 횟..