Conversation
| private val Black = Color(0xFF111111) | ||
| private val GrayText = Color(0xFF767676) | ||
| private val White = Color.White |
There was a problem hiding this comment.
요 색깔들도 color에 따로 정리하는게 재사용이나 통일성 쪽으로도 좋을 것 같아요.
| @@ -0,0 +1,59 @@ | |||
| package com.example.nike.data.model | |||
There was a problem hiding this comment.
저는 더미를 쓸 줄 모르는데,서버에서 진짜 데이터를 받아오기 전이나, 화면이 내 생각대로 예쁘게 잘 그려지는지 테스트 및 UI 확인용으로 더미를 사용하시는 것이 인상적입니다
jeongkyueun
left a comment
There was a problem hiding this comment.
ReqResUserClient.kt를 통해 1번 유저의 프로필 정보를 안정적으로 파싱할 수 있는 네트워킹 구조를 잘 짜신 거 같아요!
kimdoyeon1234
left a comment
There was a problem hiding this comment.
전체적인 화면 분리와 최신 Type-safe Navigation을 활용해 구조를 깔끔하게 잘 짜주셨습니다!
상태 끌어올리기(State Hoisting)를 통해 Shop, Wishlist, ProductDetail 화면 간의 위시리스트 상태 동기화도 매끄럽게 잘 구현하셨고, rememberSaveable로 디테일을 챙기신 점도 좋았습니다!
다만 현재는 최상위 UI 컴포저블인 Week9App이 상태 저장과 변경 로직을 모두 가지고 있습니다. 미션의 핵심인 비동기 작업(API 호출, 데이터 로딩 등)이나 데이터 수집 등의 Side Effect 관리가 추가될 때 UI 코드가 비대해지는 것을 막기 위해, 다음 단계에서는 이 로직들을 별도의 ViewModel로 통합 관리하시면 완성도가 훨씬 올라갑니다!
또한, 탭 전환 시 미션 핵심 체크리스트였던 HorizontalPager와 pagerState.targetPage를 연동한 부드러운 스와이프 인터랙션이나 AsyncImage 사용 시 접근성(contentDescription = null) 고려 등 UI/UX 디테일도 함께 점검해 보시면 더욱 좋습니다! 수고하셨습니다! 화이팅
There was a problem hiding this comment.
지금은 수정하지 않아도 됩니다!
지금 프로젝트는 단순한 List 형태라 괜찮지만, 향후 비즈니스 로직이 복잡해지거나 API 통신/로컬 DB(DataStore 등) 연동이 추가된다면 최상위 UI 컴포저블의 비대화를 막기 위해 이 상태 관리 로직을 별도의 ViewModel(예: MainViewModel 또는 SharedViewModel)로 이관하는 것을 추천합니다. UI 레이어와 비즈니스 로직 레이어를 분리하면 테스트 코드 작성과 유지보수가 훨씬 수월해집니다!
📌 PR 제목
feat: 9주차 미션_우가
🔗 관련 이슈
Closes #이슈번호
✨ 변경 사항
🔍 테스트
📸 스크린샷 (선택)
🚨 추가 이슈