개발자

비지니스로직 분리 질문드려요!

3월 24일조회 421

사이드 프로젝트를 완료했고 비지니스로직을 분리하고 싶습니다 hooks라는 폴더를 만들어 action과 api로 나눠 action에는 파이어베이스를 사용하기에 여러가지 행동적인 함수 ( 좋아요 기능, 글쓰기 기능, 조회수 등등) Api에는 탄스택쿼리를 사용하기에 해당되는 쿼리 로직들을 나눌려고 합니다. 훅을 사용하는것처럼 하나의 파일에 하나의 로직을 담아야하나요? 아니면 비슷한것끼리 파일에 넣고 export로 여러개를 두어야하나요? 제 스타일대로 하면 될꺼 같지만 현업에서는 어떤식으로 비지니스 로직을 분리하고 관리하는지 궁금해요 TMI. 로그인 페이지 하나 적용해봤는데 코드가 완전 깔끔하고 이컴포넌트에서 무엇을 하는지 딱 보여서 좋네요!!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

유길종님의 프로필 사진

하나의 파일에 하나의 로직을 담아야하는지, export를 여러개 두어도 되는지는 상황이나 취향에 따라 다를 수 있습니다. 다만 비즈니스로직과 관련하여서는 hook 뿐만 아니라 대부분의 코드도 크게 두가지로 분류하여 생각할 수 있습니다. 1. 비즈니스 맥락과 관련없이 사용할 수 있는 코드 2. 비즈니스 맥락과 깊은 연관이 있는 코드 훅으로 예를 들면 debounce, throttle 기능을 제공하는 훅은 비즈니스 맥락과 관련없이 디바운싱이나 스로틀링이 필요한 모든 곳에서 사용할 수 있을 것입니다. 반면 비즈니스 맥락과 깊게 연관을 가지는 코드도 있을 수 있습니다. 예를 들면 내 사이트의 장바구니와 관련된 훅이 있을 수 있습니다. 당연히 모든 애플리케이션이 장바구니를 사용하지도 않을뿐더러 내 프로젝트의 구조에 맞는 특정 데이터구조를 담고있을 장바구니를 다루는 훅은 나의 비즈니스와 깊게 연관이 있으면서 다른 곳에 그대로 이식할 수 없는 코드일 것입니다. 여러가지 요구사항을 반영하는 프론트엔드 코드를 짜다보면 자연스럽게 코드의 복잡도가 올라가게 됩니다. 이는 비즈니스로직과 그 비즈니스로직을 외부 API 혹은 기능과 적절히 녹여내기 위해 복잡해지는 경우가 대부분인데요 예컨대 앞서 말했듯이 기능을 구현하다보면 디바운싱 스로틀링이 필요한 기능이 있을 수 있습니다. 이런 경우 디바운싱 스로틀링 기능을 추상화하지 않으면 비즈니스로직과 디바운싱 스로틀링을 구현하기위한 클로저, 셋타임아웃 코드들이 혼재되면서 코드복잡도가 높아지게 됩니다. 그런데 만약 비즈니스로직과 이런 UI 혹은 유틸리티성 기능들이 끈끈하게 결합되어있다면 어떨까요? 코드를 관리하기도 어려울거고 코드의 의도를 파악하기도 어렵겠죠? 이렇듯 프론트엔드 개발에서 비즈니스 로직을 고민할 때에는 특정 기능에서 내 프로젝트의 맥락에만 존재하는 "비즈니스로직"인 것과 그렇지 않은것을 적절히 구분하고 그 둘을 격리하여 구현하는 것이 중요합니다. 이것을 의식하면서 코드를 작성해보시고 조금 더 관심이 생긴다면 클린아키텍처, Feature Sliced Design과 같은 키워드를 검색해보시면 좋을 것 같습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!