스팀 앱 개발기 #155 - 개발 계획: 추가 개선 적용
개발 계획: 추가 개선 적용
No. 155
2026. 05. 22 (금) | Written by @dorian-mobileapp
다음 작업을 위해 클로드 코드에서 새 방을 만들었습니다. 혹시나 해서 클로드 코드에게 추가로 아래와 같은 질문을 했습니다.
이 프로젝트에서 개선점을 다시 한번 알려주세요.
아니나 다를까... 또 다른 개선점들이 나왔어요. 다음 기능 개발을 시작하기 전에 다 반영하는 게 좋겠지요? 장기적으로는 그것이 롱런하는 길이라고 생각합니다.
결론은요. 아래 개선 사항들 또한 점진적으로 적용할 예정입니다.
개선 필요 사항
1. 파일명 오타
- MainApplciation.kt →
MainApplication.kt(오타)
2. 파일명 불일치 (Fragment → Screen)
Compose 기반 화면임에도 *Fragment.kt 이름 사용 중:
TagsFragment.kt,ProfileFragment.kt,WalletFragment.kt,AccountHistoryFragment.kt,AccountDetailsFragment.kt,PostListFragment.kt- → 각각
Screen.kt으로 변경 필요
3. 캡슐화 위반
- WalletViewModel.kt:17:
_flowWalletState에private없음 → 외부에서 직접 수정 가능
4. 아키텍처 위반 (ViewModel → 데이터 레이어 직접 참조)
- TagsViewModel.kt:
import lee.dorian.steem_data.repository.SteemRepositoryImpl - ProfileViewModel.kt: 동일 import (Preview 전용이지만 ViewModel 파일에 존재)
- WalletViewModel.kt: 동일 import
- ViewModel이 data 레이어 구현체를 직접 알면 안 됨 (DI로 주입받아야 함)
5. Composition 중 부작용 직접 호출 (버그 위험)
Composable 안에서 ViewModel 메서드를 직접 호출 → LaunchedEffect로 교체해야 함:
- TagsFragment.kt:68:
viewModel.readRankedPosts()직접 호출 - ProfileFragment.kt:65:
viewModel.readSteemitProfile(account)직접 호출 - WalletFragment.kt:52:
viewModel.readSteemitWallet()직접 호출 - PostListFragment.kt:31:
viewModel.readPosts()직접 호출
6. 불필요한 파라미터
- TagsFragment.kt의
TagsPostList:viewModel: TagsViewModel파라미터를 받지만 내부에서 사용하지 않음
7. 초기 State 불일치
TagsViewModel._flowTagsState초기값 =State.Loading- 나머지 ViewModel들 초기값 =
State.Empty - → 일관성 있게
State.Empty로 통일 필요
8. WalletPowerDown title 버그
- WalletFragment.kt의
WalletPowerDown: title이"Balances"로 하드코딩됨 →"Power Down"이어야 함
9. _flowDGPState 노출 방식 불일치
- AccountHistoryViewModel.kt:
_flowAccountHistoryState는asStateFlow()로 노출하지만_flowDGPState는stateIn(WhileSubscribed(5000))으로 노출 → 구독자가 5초 없으면 상태 리셋됨 (의도치 않은 동작 가능)
10. BaseViewModel이 빈 클래스
- BaseViewModel.kt:
ViewModel()만 상속하고 아무 기능 없음 → 향후 공통 기능 추가 계획이 없다면 제거 고려
우선순위로는 5번(Composition 부작용), 3번(캡슐화), 8번(title 버그)이 실제 동작에 영향을 주는 항목입니다.
지난 스팀 앱 개발기
- #154 - 개발 완료: 테스트 코드 개선
- #153 - 개발 완료: Architecture 개선 작업
- #152 - 개발 완료: 레거시 의존성 제거 작업 요약
- #151 - 개발 완료: Compose 마이그레이션 연장선
- #1 ~ #150
Layout provided by Steemit Enhancer hommage by ayogom
Upvoted! Thank you for supporting witness @jswit.
🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5