Rhedi/week8 미션#86
Conversation
There was a problem hiding this comment.
8주차 피드백
안녕하세요, 레디🎤! 서서히 종강이 다가오는 게 느껴집니다... 조금 더 파이팅해봅시다!!
총평
이번 주에는 Compose에서의 리스트 구현에 대해 학습했는데요. 이는 성능과 안정성에 직접적인 영향을 미치는 요소입니다. 때문에 불필요한 Recomposition을 방지하고, 스크롤 가능한 컴포넌트의 올바른 사용에 대한 고민이 항상 필요한 지점이라고 볼 수 있겠습니다!
LazyVerticalGrid를 활용하여 리스트 UI를 구현하려는 노력이 엿보입니다. 특히, LazyColumn에서 아이템에 고유 키를 지정하는 등 모범 사례를 적용하려는 시도가 긍정적입니다. 전반적으로 프로젝트의 학습 목표에 부합하며, Compose 리스트의 기본 개념을 잘 이해하고 적용하고 있는 것으로 평가됩니다.
리뷰
Good!
1. LazyColumn 아이템에 고유 키 지정
LazyColumn의 items 함수에서 key = { it.id }를 사용하여 각 아이템에 고유한 키를 지정한 것은 매우 훌륭합니다. 이는 리스트의 아이템이 추가, 삭제, 이동될 때 Compose가 각 아이템의 상태를 안정적으로 추적하고 불필요한 Recomposition을 방지할 수 있게 합니다.
2. LazyListScope DSL의 올바른 사용
LazyColumn 내에서 items() 함수를 사용하여 리스트 데이터를 효율적으로 표시한 것은 LazyListScope DSL을 올바르게 활용한 좋은 예시입니다. 이는 수동으로 for 루프를 사용하는 것보다 Compose의 Recomposition 최적화에 도움을 줍니다.
To Improve
1. 불필요한 Recomposition 검토
현재 HomeScreen.kt에서 LazyColumn과 key 사용은 Recomposition 최적화에 기여하지만, ProductCard 내부 구현이나 HomeScreen의 다른 부분에서 상태 관리 방식에 따라 불필요한 Recomposition이 발생할 여지가 있습니다. 예를 들어, ProductCard에 전달되는 product 객체가 변경되지 않았음에도 불구하고 상위 Composable의 Recomposition으로 인해 ProductCard가 불필요하게 Recomposition될 수 있습니다. 이를 방지하기 위해 ProductCard가 Stable 또는 Immutable 객체를 받도록 하거나, remember와 derivedStateOf를 적절히 활용하여 상태 변경에 따른 Recomposition 범위를 최소화하는 방법을 고려해볼 수 있습니다.
📌 PR 제목
#️⃣ 연관된 이슈
closes #(issue_num)
✅ 변경 사항
items()함수를 사용하여 동일한 리스트 데이터 표시key를 지정하여 상태 안정성 확보📷 영상 및 스크린샷
week8.webm
🔗 알게 된 사항
DSL 활용과 성능 최적화: 레이아웃 중첩을 피하기 위해 items() 블록을 사용하고, 아이템마다 고유 key를 지정하면 된다.
📝 질문 사항