Conversation
- 6개 Feature(Bookmark, Detail, Search, Subscribe, MyPage, Launch)에서 미사용 Core 의존성 제거 - SDWebImageSwiftUI, ComposableArchitecture 외부 의존성 완전 제거 - SwipeBackHandler를 Shared → DesignSystem으로 이동 (UI 유틸리티 적절한 레이어 배치) - AppFlowCoordinatorView에 import DesignSystem 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 9개 Feature에 Interface 모듈 추가 (Factory protocol 정의) - 각 Feature에 ViewFactoryImpl 구현체 추가 - AppCoordinator가 구현체 대신 Interface(protocol)만 의존하도록 전환 - NewDokTabView를 Factory 기반으로 리팩토링 - AppDIContainer에서 Feature import 제거 (Domain/Data/Core만 유지) - App 모듈에 CompositionRoot 추가 (Factory 조립 담당) - Feature 변경 시 AppCoordinator 재컴파일 불필요 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly refactors the application's architecture by introducing an interface-based modular design for its features. The changes aim to improve maintainability, testability, and scalability by decoupling feature implementations from the main application flow and coordinator. Dependency injection, facilitated by Swinject and a new CompositionRoot, is now used to provide view factories, ensuring a cleaner and more organized dependency graph. This foundational work sets the stage for integrating new features like multi-factor authentication with a robust and flexible structure. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a significant architectural refactoring by implementing a factory pattern for view creation and dependency injection across the application. It centralizes view factory creation in a new CompositionRoot module, which resolves dependencies via Swinject. Feature modules now expose ViewFactory protocols, and the AppCoordinator and NewDokTabView are updated to depend on these interfaces rather than concrete ViewModel implementations, enhancing modularity and decoupling. Additionally, ComposableArchitecture and SDWebImage dependencies are removed, and various code comments are cleaned up. A minor improvement opportunity was noted regarding extracting a shared DI container property for better readability.
| enum CompositionRoot { | ||
| static func makeAuthFactory() -> AuthViewFactory { | ||
| let container = AppDIContainer.shared.container |
There was a problem hiding this comment.
To reduce repetition and improve readability, you can extract AppDIContainer.shared.container into a private static property. This avoids redeclaring the container variable in every factory method.
enum CompositionRoot {
private static let container = AppDIContainer.shared.container
static func makeAuthFactory() -> AuthViewFactory {Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
No description provided.