[Chore/#134] Orbit-MVI 라이브러리 버전을 업데이트 합니다. (v6.1.0 -> v10.0.0)#135
[Chore/#134] Orbit-MVI 라이브러리 버전을 업데이트 합니다. (v6.1.0 -> v10.0.0)#135
Conversation
WalkthroughOrbit MVI 라이브러리를 Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant UI as UI / Intent
participant VM as ViewModel
participant Orbit as Syntax<STATE,SIDE>
participant StateStore as state store
UI->>VM: intent()
VM->>Orbit: reduceState(intent, currentState)
Note right of Orbit: receiver type changed\n(SimpleSyntax -> Syntax)
Orbit->>StateStore: emit new STATE? (return)
Orbit->>VM: postSideEffect(SIDE) or no-op
VM->>UI: new state / side-effect
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
MVIVIewModel을 설계할 떄 고려했던 점 중 하나가 MVI 패턴을 유지하면서 구현 방식을 변경해야 할 때의 용이성을 고려한 부분이 있습니다! 단순 State를 하나로 묶은 MVVM 구조가 더 적합하다고 판단된다면, 대현님 말씀대로 Intent를 생성하는 것 자체가 불필요하기에, MviViewModel 대신 직접 orbit을 사용하는 방식이 더 적합할 것 같습니다! |
넵! 이 부분은 이번주 스크럼에서 더 자세하게 논의 해봅시다욤~ |
|
오 runBlocking이 제거되었군요 🔥 🔥 🔥 |
[ PR Content ]
orbit-mvi 라이브러리 버전 업 작업을 진행했습니다. (v6.1 -> v10.0)
주요 변경사항은 다음과 같습니다.
intent {}에서 사용중이던runBlocking이 제거되었습니다 -> pr 링크SimpleSyntax->Syntax로 마이그레이션 되었습니다.Related issue
Work Description
To Reviewers 📢
[추상화에 대한 고찰: orbit MVI의 장점을 활용하지 못하고 있는 이유]
이번 작업을 진행하면서 저희 프로젝트의 orbit mvi 사용 방식에 대해 고민을 해봤습니다.
저희는 mvi 패턴의 "상태 변경 추적의 용이성"의 이점을 누리되, "보일러플레이트 코드 생성"이란 단점을 최소화하기 위해 orbit mvi를 도입했습니다.
하지만 프로젝트의 완성도가 높아진 현시점에서 "과연 보일러플레이트가 줄었는가?"를 생각했을때, 아니다란 생각이 들었습니다. 실제로 수동으로 mvi 패턴을 구현했던 이전 경험과 비교해봐도 orbit을 사용한 코드가 더 간결하다고 느끼기 어려웠습니다.
원인이 무엇일까? 파악을 해봤는데, 저희는 orbit이 제공하는
intent {}를 직접 사용하는 것이 아니라, 초기에 라이브러리 교체 용이성을 목적으로 만든 별도의 추상화 계층(MVIViewModel,sendIntent)을 한 단계 더 통과하고 있습니다. 이 과정에서 intent 객체를 추가로 생성하고 있기 때문에 orbit에서 제거한 보일러플레이트가 다시 발생하고 있었습니다.이에 대한 해결책을 고민해봤을때, 가능성이 낮은 미래를 고려한 추상화 유지하기 보단 현재의 추상화를 걷어내고 orbit의 장점을 극대화하는 것이 더 얻을 수 있는 이점이 많다고 생각했습니다..!
이에 대한 세환님 의견이 궁금합니다! (어푸 여부와 상관없이, 해당 pr에 남겨주셔도 좋고, 스크럼시간에 다뤄도 좋을거 같습니다!)
Summary by CodeRabbit
릴리스 노트
Chores
Refactor
Tests