Skip to content

[Refactor] 의존성 주입 구조 개선 및 불필요한 팩토리 메서드 제거#66

Merged
Peter1119 merged 11 commits intomainfrom
refactor/di_usecase_remove
Dec 16, 2025
Merged

[Refactor] 의존성 주입 구조 개선 및 불필요한 팩토리 메서드 제거#66
Peter1119 merged 11 commits intomainfrom
refactor/di_usecase_remove

Conversation

@Peter1119
Copy link
Contributor

🔗 관련 이슈

  • 관련 이슈: #

✨ 작업 내용

  • 의존성 주입 구조 간소화: LiveDependencies.swift에서 UseCase를 생성할 때 수동으로 Repository를 주입하던 팩토리 메서드(예: makeOAuthUseCase)를 제거하고, TCA의 의존성 관리 시스템을 활용하도록 구조를 변경했습니다.
  • UseCase 내부 구현 개선: OAuthUseCase, FetchCountriesUseCase, FetchExchangeRateUseCase 등에서 생성자 주입을 제거하고, @Dependency를 사용하여 내부에서 필요한 Repository에 접근하도록 수정했습니다.
  • Repository 등록 방식 통일: 각 도메인(Auth, OAuth, Country, Travel, Settlement 등)의 Repository를 LiveDependencies에 명시적으로 등록하여 의존성 그래프를 명확하게 정리했습니다.
  • 코드 포맷팅 수정: OAuthUseCase.swift 파일 등에서 일관되지 않았던 들여쓰기와 공백을 정리했습니다.

📸 Showcase

변경 전 변경 후
이미지 이미지

📌 UI 변경 사항은 없으며 내부 의존성 구조 리팩토링입니다.


📝 참고 사항

  • 기존에는 UseCase가 인스턴스화 될 때 외부에서 Repository를 주입받아야 했으나, 이제는 UseCase 내부에서 의존성을 해결하므로 호출부 코드가 훨씬 간결해졌습니다.
  • 테스트 시에는 기존과 마찬가지로 withDependencies를 사용하여 Mock Repository를 주입할 수 있습니다.

Motivation 🥳 (코드를 추가/변경하게 된 이유)

LiveDependencies 파일에서 모든 UseCase와 Repository 간의 의존 관계를 수동으로 연결해주다 보니 코드가 길어지고 관리가 어려워지는 문제가 있었습니다. TCA의 의존성 주입 시스템(Dependencies)을 더 적극적으로 활용하여 불필요한 보일러플레이트 코드를 줄이고, 유지보수성을 높이기 위해 이번 리팩토링을 진행했습니다.

Key Changes 🔥 (주요 구현/변경 사항)

  • Domain/Sources/UseCase/OAuth/OAuthUseCase.swift: 생성자 주입 제거, @Dependency 사용, 코드 포맷팅
  • SseuDamApp/Sources/Application/LiveDependencies.swift: 팩토리 메서드 삭제, Repository 직접 등록 방식으로 변경
  • FetchCountriesUseCaseProtocol.swift, FetchExchangeRateUseCaseProtocol.swift: 불필요한 코드 정리

To Reviewers 🙏 (리뷰어에게 전달하고 싶은 말)

의존성 주입 로직이 변경되었으므로, 앱 실행 시 각 기능(특히 로그인, 여행 관련 기능)이 정상적으로 동작하는지 확인 부탁드립니다.

Reference 🔗

Close Issues 🔒 (닫을 Issue)

Close #No.

Checklist

  • 브랜치를 가져와 작업한 경우 이전 브랜치에 PR을 보냈는지 확인
  • 빌드를 위해 SceneDelegate 수정한 것 PR로 올리지 않았는지 확인
  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인
  • final, private 제대로 넣었는지 확인

@Peter1119 Peter1119 self-assigned this Dec 16, 2025
Copy link
Contributor

@Roy-wonji Roy-wonji left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 수고 하셨습니다

Copy link
Contributor

@minneee minneee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LiveDependencies 내부가 훨씬 깔끔하고 좋네요!!

# Conflicts:
#	SseuDamApp/Sources/Application/LiveDependencies.swift
@Peter1119 Peter1119 merged commit 579d206 into main Dec 16, 2025
@Peter1119 Peter1119 deleted the refactor/di_usecase_remove branch December 16, 2025 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants