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

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions