Conversation
|
파일 패키징 수정 고생많으셨습니다! 저두 컴포넌트 별로 나누는 것은 좋다고 생각해요!
현재 내용에는 재사용성에 대한 usecase의 장점만 나와있는데 (열심히 읽었는데 놓쳤을 수도..?) 물론 현재는 아직 usecase 하이브리드 전략을 사용하자라던가 기준을 정해놓지는 않아서 위 방식에 대해서는 장점이 있구나 정도만 쓰고 나중에 확실히 정해서 사용하면 좋을 것 같아요 TMI 더 적어 보자면 UseCase를 사용해서 저렇게 재사용성, 캡슐화 등 비즈니스 로직을 명명하여 개발자들도 쉽게 이름으로만 파악하여 사용할 수 있게 할 수 있는데 구권아 기준에서 보일러 플레이트라고 생각되신다면? // 읽기 전용 기능만 모음
interface UserReader {
fun getUserProfile(): User
fun getPoint(): Int
}
// 쓰기 기능만 모음
interface UserWriter {
fun updateProfile(user: User)
fun deleteAccount()
}
// 전체 기능을 가진 인터페이스
interface UserRepository : UserReader, UserWriter
class UserRepositoryImpl @Inject constructor(
private val dataSource: UserDataSource
) : UserRepository { // UserReader, UserWriter 모두 구현
override fun getUserProfile() = ...
override fun getPoint() = ...
override fun updateProfile(user: User) = ...
override fun deleteAccount() = ...
}
@HiltViewModel
class HomeViewModel @Inject constructor(
private val userReader: UserReader
) : ViewModel() {
fun loadData() {
userReader.getUserProfile()
}
}이런식으로 interface만으로도 캡슐화를 지킬 수 있으니 고려해도 좋을 것 같아용! |
seungjae708
left a comment
There was a problem hiding this comment.
키하하
깔끔한 노션 정리까지 정말 고생 많으셨습니다!! 공부 많이되네요
There was a problem hiding this comment.
p1) datasourcimpl 오타 수정 부탁드려용
dmp100
left a comment
There was a problem hiding this comment.
수고 많았어용 ~ ! UseCase의 도입 기준만 먼저 같이 잘 생각해나가면 좋을거같아요 !
There was a problem hiding this comment.
p3 ) request로 정정하면 좋을 것 같습니다 !
ISSUE
❗ WORK DESCRIPTION
📢 TO REVIEWERS
Domain 계층 추가하면서 기존 파일들 패키지 수정 위주로 진행하였습니다.
Data layer 파일 통일성을 위해서 경로를 수정하였습니다.
Core/DesignSystem 쪽 component 들을 확장성을 위해 컴포넌트 단위로 패키징할지 고민중입니다.
Domain 계층에 repository, entity 가 들어가야 되나 고민하다가 useCase 만을 추가했습니다.
이유는 따로 노션에 정리했습니다. 궁금하시면 순서대로 읽어주세요
https://www.notion.so/2beab2edd62880409404d8c6b2dfbfeb?source=copy_link
https://www.notion.so/Domain-308ab2edd628804b9b8de27231bbd480?source=copy_link
아직 domain 쪽에 useCase가 없지만 내용 확인하시고 필요시 의도에 맞게 useCase 추가해주시면 됩니다.
Ds 수정된거랑 아이콘 추가해줄 분 구함... 키하하
파일 체인지가 많은데.. 옮기고 지우고 하면서 의존성 확인해보느라.. 그냥 경로만 수정된게 대부분일 겁니다.
📸 SCREENSHOT