해결된 질문
작성
·
77
0
강의를 통해 학습에 정말 많은 도움을 받고 있습니다. 감사합니다.
처음부터 구조를 잘 잡아서 설계하면 좋겠지만, 역할이 제대로 명시되지 않은 함수들을 각각 repository, service, viewmodel로 역할을 명시해주는 것도 난이도가 있으면서 함수들의 역할을 더 명확히 파악하는 데 도움이 될 것 같아서 파일 하나에 함수를 몰아 놓고 분리해보고 있습니다.
혹시 repository, service, viewmodel로 함수를 분리해서 작성할 때, 명확한 기준이 존재할까요??
제가 학습한 바로는 repository는 데이터베이스/서버 통신 또는 데이터 불러오기 관련, service는 repository를 활용한 비즈니스 로직, Viewmodel은 service를 활용한 View와의 상호작용이라고 알고 있습니다.
제가 아직 비즈니스 로직을 명확하게 구분하기기 어렵습니다..
에를 들면 파일 탐색기 실행 > 파일 경로 받기 > 파일 디코딩 > JSON(map)형식 변환 > 데이터 필터링 의 과정이 있다고 가정하면, 여기서 어디까지의 함수를 어디로 분리할 지 감이 오지 않습니다.
명확하게 구분할 수 있는 기준이나 팁이 존재한다면 알고 싶습니다!
답변 2
1
인공지능 답변에 이어 제가 답변 드리겠습니다.
이 부분이 쉽지 않은 영역인데요.
파일 디코딩 -> JSON 변환은 순수하게 데이터를 처리하는 부분이고 Service 또는 DataSource 로 부를 수 있겠습니다.
비즈니스 로직은 여기에 앱에 필요한 로직이 가미되면 그것이 비즈니스 로직입니다.
비즈니스 로직은 두 군에서 작성할 수 있겠습니다.
View에 대한 비즈니스 로직은 ViewModel 에 함수에서 작성합니다.
그 외에 데이터의 복잡한 처리가 비즈니스 로직이라고 보면 될 것 같습니다.
결론적으로 "앱에 필요한 로직이 가미되면 그것이 비즈니스 로직"이다. 라고 보시면 어떨까요?
0
안녕하세요, 인프런 AI 인턴입니다. 민태호님.
먼저, 질문해주신 내용에서 적절한 답변을 찾기 위해 먼저 비슷한 주제를 다루는 게시물을 추천 드리겠습니다:
폴더 구조화 질문 : 이 게시물에서는 기능별로 어떻게 아키텍처를 구성할지에 대해서 설명하고 있습니다. 특히, 앱의 규모가 커질 때 폴더 구조를 클린 아키텍처에 맞게 어떻게 구성할지에 대한 예시를 제공합니다. 이미지 URL도 포함되어 있어, 실제 구현에 도움이 될 수 있습니다.
클린 아키텍처에 대해 : 클린 아키텍처 내에서 Use Case와 MVC 패턴의 서비스 간의 차이점을 설명하고 다중 모델을 어떻게 관리할지에 대한 고민을 다룬 게시물입니다. 클린 아키텍처의 필요성에 대해 고민하시는 데에 도움이 될 수 있습니다.
클린 아키텍처, MVVM 여러 질문 : MVVM과 클린 아키텍처에서 각 컴포넌트의 역할에 대한 자세한 설명이 담겨 있습니다. 로그인 정보 관리 및 UseCase와 ViewModel 구분에 대한 사용자님의 고민을 자세히 다룹니다.
Flutter에서 MVVM 패턴을 사용하는 주요 장점은 코드의 역할을 명확히 분리하여 유지보수가 쉽고 테스트가 용이하다는 점입니다.
질문에서 예로 드신 파일 처리 시스템을 보자면 각각은 다음과 같이 배치할 수 있습니다:
- Repository: 파일 경로를 통해 파일을 읽어오는 역할
- Service: 파일을 디코딩하고 JSON 형식으로 변환하는 과정
- ViewModel: 변환된 데이터를 필터링하고 UI에 전달
비즈니스 로직의 구분은, 어떤 로직이 UI 변화에 직접 영향을 주는지 또는 데이터를 가공하는 과정인지에 따라 결정될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
"앱에 필요한 로직"이라는 키워드가 정말 좋은 것 같습니다.
참고해서 공부해보겠습니다 감사합니다!