810 words
4 minutes
React 프로젝트에서 유틸 함수(utility function)를 어떤 기준으로 분리하고 관리하나요.
2025-05-10

” 하루에 하나씩 FE 면접 문제 5월 8일입니다. ”

React 프로젝트에서 유틸 함수(utility function)를 어떤 기준으로 분리하고 관리하나요? 유틸 함수가 많아졌을 때의 문제점과 해결 방법도 함께 설명해주세요.

1. 유틸리티 함수란?#

유틸 함수는 반복적으로 실행되는 기능들을 모아서 함수로 분리합니다. 데이터를 원하는 형태로 바꾸거나 편리함을 위해 반복적으로 수행되는 것들을 파일로 분리하는 것입니다.

  • 기능에 따라 분리하는 것이 일반적이며, 리액트의 경우 utils 폴더 안에 주로 생성합니다.이 때, libs와 혼동하는 경우가 더러 있습니다.

utils? libs?#

utils

  • 특정 비즈니스 로직에 의존하지 않고 여러 곳에서 사용하는 함수들을 주로 모아둡니다.
    libs
  • 외부 라이브러리나 API 관련 반복되는 기능들을 모아둡니다.
- `utils`: `formatDate`, `debounce`, `capitalize`, `isEmpty`
- `libs`: `axiosInstance`, `firebaseClient`, `authProvider`

2. 유틸리티 함수를 작성할 때 무엇을 고려해야 하나요?#

  1. 기본적으로 유틸리티 함수는 동일한 로직이 여러 곳에서 반복적으로 사용되므로, 해당 기능을 쓸 때마다 5,6줄 혹은 그 이상 되는 코드들을 다시 치는 것이 생산성 떨어지므로 유틸리티 함수로 분리해 코드 전체 줄을 줄이는 것입니다. 유지보수도 쉬워집니다.
  2. 유틸리티 함수 이름을 지을 때는 주로카멜케이스로 작성합니다. 함수 이름만 보고도 직관적으로 기능을 알 수 있도록 지어야 합니다.
  3. 비즈니스 로직과 분리되어야 합니다. 유틸 함수는 특정 컴포넌트에 의존하지 않고 순수 함수 형태로 작성되어야 합니다.
    • 순수함수는 기본적으로 인풋이 같으면 항상 같은 아웃풋이 나와야 합니다.
    • 즉 외부 상태에 의존하거나 사이트 이펙트가 일어나지 않도록 하는 함수입니다.
    • 참고

3. 유틸함수가 많아질 경우 어떻게 하지?#

유틸함수가 너무 많아질 경우 원하는 유틸을 찾기 어려워지며 생산성이 떨어집니다. 이전에 프로젝트에 fsd 아키텍처를 적용했는데 이 때 사용한 방법이 매우 좋아보입니다. 일반적으로 쓰는 방법인지는 모르겠습니다.

  • FSD 아키텍처는 디렉토리 구조가 가장 많이 쓰시는 구조와 많이 다릅니다. 몇 가지 정해진 폴더가 있고 그 안마다 도메인별로 또 폴더들이 나뉘어집니다. 즉 폴더가 정말 많은데요. 이 때 해당 폴더에 index.js 파일을 통해 import, export를 관리합니다.

기능별 분리#

유틸함수도 이처럼 날짜, 데이터 등 필요한 도메인에 따라 폴더를 나누고 폴더 별로 index.js를 두면 좀 더 편리하게 관리할 수 있습니다.

React 프로젝트에서 유틸 함수(utility function)를 어떤 기준으로 분리하고 관리하나요.
softourr.github.io/react-프로젝트에서-유틸-함수utility-function를-어떤-기준으로-분리하고-관리하나요.md
Author
softourr
Published at
2025-05-10