Skip to content

Entry의 View 구성 요소와 렌더링 입력을 분리한다 - #941

Merged
opficdev merged 1 commit into
developfrom
refactor/#879
Oct 28, 2026
Merged

opficdev merged 1 commit into
developfrom
refactor/#879

Conversation

@opficdev

@opficdev opficdev commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

🔗 연관된 이슈

🎯 의도

  • 현재 탐색 구조와 동작을 유지한 채 MainView.swift의 뷰 생성 함수를 같은 파일의 private struct View로 분리
  • 화면 표현에 필요한 값과 동작만 렌더링 입력으로 전달

📝 작업 내용

📌 요약

  • MainView의 tabContent(_:)와 tabView(_:isSelected:)를 MainTabContent로 분리
  • SideBar의 tabButton(_:)을 SideBarButton으로 분리

🔍 상세

  • MainTabContent
    • 입력: tab, isSelected, showsSideBar, windowEvent
    • isTabContentActive 환경 값과 tab bar 가시성 적용 순서 유지
    • 탭별 화면 생성 인자 유지
  • SideBarButton
    • 입력: tab, isSelected, unreadPushCount, action
    • 레이아웃, 스타일, 읽지 않은 알림 배지 조건 유지
  • StoreOf, selectedTab Binding, 저장 클로저 전달 없음
  • SideBar, ResizableSideBarModifier의 같은 파일 전용 접근 수준과 동작 유지
  • TabView(selection:)와 네 개 Tab의 구조적 위치 유지

📸 영상 / 이미지 (Optional)

Instruments 측정 (View Body)

  • 조건: Release 최적화(Staging 구성) 빌드, iPhone 18 Pro 시뮬레이터(iOS 27.0), View Body (Legacy), 변경 전후 각 5회 교차 측정 후 중앙값 비교, 괄호는 5회 측정 범위
  • 시나리오: 홈 → 오늘 → 알림 → 프로필 → 홈 탭 전환 10바퀴(탭 40회)
  • 로그인된 계정의 실제 데이터 기준
대상 구분 body 평가 횟수 body 평가 시간 합계
MainView 변경 전 37회 62.42ms (60.30 ~ 67.71)
MainView 변경 후 37회 3.48ms (3.22 ~ 5.05)
MainTabContent 변경 후 76회 59.79ms (58.68 ~ 69.25)
합계 변경 전 37회 62.42ms (60.30 ~ 67.71)
합계 변경 후 113회 63.27ms (61.90 ~ 72.51)
  • 변경 후 MainView body 평가 시간은 감소했으나 같은 규모의 평가가 MainTabContent로 이동해 합계는 측정 범위가 겹침
  • 뷰 생성 함수를 View로 분리하는 구조 변경이며 평가 시간 개선은 확인되지 않음
  • SideBarButton은 폰 크기의 시뮬레이터에서 사이드바가 표시되지 않아 측정 대상에서 제외

@opficdev opficdev self-assigned this Oct 28, 2026
@opficdev
opficdev merged commit 3beed6a into develop Oct 28, 2026
9 checks passed
@opficdev
opficdev deleted the refactor/#879 branch October 28, 2026 00:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Entry의 View 구성 요소와 렌더링 입력을 분리한다

1 participant