스팀 앱 개발기 #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: _flowWalletStateprivate 없음 → 외부에서 직접 수정 가능

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: _flowAccountHistoryStateasStateFlow()로 노출하지만 _flowDGPStatestateIn(WhileSubscribed(5000))으로 노출 → 구독자가 5초 없으면 상태 리셋됨 (의도치 않은 동작 가능)

10. BaseViewModel이 빈 클래스

  • BaseViewModel.kt: ViewModel()만 상속하고 아무 기능 없음 → 향후 공통 기능 추가 계획이 없다면 제거 고려

우선순위로는 5번(Composition 부작용), 3번(캡슐화), 8번(title 버그)이 실제 동작에 영향을 주는 항목입니다.


지난 스팀 앱 개발기


Layout provided by Steemit Enhancer hommage by ayogom

Posted using SteemX

Sort:  

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

banner.jpg