Skip to content

Domain Layer에서 발생하는 의존성 역전 원칙 위반 사항을 수정합니다 #397

@HI-JIN2

Description

@HI-JIN2

목적

Domain Layer에서 DTO 등 Data Layer에 있는 클래스를 import하는 것을 수정

상세 계획

비즈니스 로직 구현에 꼭 필요한 것만 domain에 남기도록 의존성 수정

Domain에서 의존성 가지는 것을 금지할 것

  • com.eatssu.android.presentation.* (presentation 타입/컴포넌트/모델)
  • com.eatssu.android.data.* (DataStore, DTO request/response 등 구현 디테일)
  • com.eatssu.android.R (app 리소스 직접 참조)

현재 “잘못된 의존” 목록(확인된 것들)

Presentation 의존

  • app/src/main/java/com/eatssu/android/domain/usecase/widget/GetTodayMealUseCase.kt → com.eatssu.android.presentation.widget.WidgetMealList + Timber

app 리소스 의존

  • app/src/main/java/com/eatssu/android/domain/usecase/user/ValidateNicknameLocalUseCase.kt → com.eatssu.android.R, UiText.StringResource(...)

Data 타입 의존(도메인이 DTO/로컬스토어를 직접 앎)

  • Repository가 DTO request를 직접 받음
  • app/src/main/java/com/eatssu/android/domain/repository/UserRepository.kt → ChangeNicknameRequest
  • app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt → CheckValidTokenRequest
  • app/src/main/java/com/eatssu/android/domain/repository/ReportRepository.kt → ReportRequest
  • UseCase가 com.eatssu.android.data.local.* 직접 사용(로컬 저장은 구현 디테일)
  • 예: LogoutUseCase, SetUserNicknameUseCase, Get/SetAccessTokenUseCase, Get/SetDailyNotificationStatusUseCase, Save/LoadRestaurantByFileKeyUseCase, etc.

최소 리팩토링 실행 계획(“경계 위반만 끊기”)

DTO request를 domain 밖으로 밀어내기(가장 효과 큼, 변경 범위 작음)

  • UserRepository.updateUserName(ChangeNicknameRequest) → updateUserName(nickname: String)
  • OauthRepository.checkValidToken(CheckValidTokenRequest) → checkValidToken(token: String)
  • ReportRepository.reportReview(ReportRequest) → reportReview(reviewId: Long, reportType: String, content: String) (또는 command domain 모델)
  • impl(*RepositoryImpl)에서 DTO 생성하도록 이동

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions